[OT] Any way to select line breaks?
Eimantas Paškonis
Posts: 91
I have a script font with three sets of contextual alternates. Everything's working fine except when two consecutive paragraphs start with the same capital letter – they're always from the default set. I tried adding /CR, /lineseparator and /paragraphseparator to the code but it didn't do anything.
Tagged:
0
Comments
-
It's not clear from your question, but I'm assuming that when you say you have three sets of alternates that your code tries to rotate through these? Correct?
There's no way to reference a carriage return since that's going to define a new text run. If you want to avoid having the same character at the beginning of successive characters about the only way I can think of doing that is to divide the characters in your font into three sets and then do something like the following:sub A' @AllCharacters @AllCharacters @AllCharacters @Set1 by A.1;<br>sub A' @AllCharacters @AllCharacters @AllCharacters @Set2 by A.2;<br>sub A' @AllCharacters @AllCharacters @AllCharacters @Set3 by A.3; ... additional 'calt' code
That will select an alternate based on the fifth character in the paragraph (I chose the 5th character over the 2-4th since a substantial number of paragraphs begin with 'The ').
André0 -
P.S. You can easily refer to the beginning of a paragraph, just not to the character itself or anything from the previous paragraph.
ignore sub @AllCharacters A;<br>sub A' by A.init;
can be used for a paragraph-initial alternate, but it won't help with the problem you're trying to solve.
(I bring this up only because I just spent some time fixing a font that used sub space X' by X.init for all of its word initial alternates which, of course, prevented them from being used at the beginning of a paragraph).
André1 -
It's not clear from your question, but I'm assuming that when you say you have three sets of alternates that your code tries to rotate through these? Correct?Yes: Default + ss01 + ss02. Sets are broken into consonants and vowels.
Is it possible to go backwards? Because both paragraphs start with the same two words. I tried but couldn't make it work. I guess one workaround would be to add a ton of @AllChars in the code so it samples not the 5th, but 15th letter or so...
This matters because I'm doing a digitization of a lettering from a document. Its text will be inevitably typed in the font for comparison.0 -
It's not possible to go backwards at the beginning of a paragraph.
In the situation which you describe, I'd probably not worry about it in the code. My suggestion would prevent the same alternate from being used in many successive paragraphs, but not all, and the same would hold for any workable solution. You can always use the glyph palette to make your own selection in cases where your code produces undesired results
André0 -
I made it work, in a messy way.
<p><b>lookup</b> LT {<br></p><p> </p><p><b>sub</b> L' i e t u v o s space T a r y b a @All @All @con0 @vow0 <b>by</b> L.ss01;</p><p> </p><p><b>sub</b> L' i e t u v o s space T a r y b a @All @All @con0 @con0 <b>by</b> L.ss02;</p><p><br></p><p> </p><p><i># L_i</i></p><p> </p><p><b>ignore</b> <b>sub</b> @All @Uppercase i';</p><p> </p><p><b>sub</b> @Uppercase i' @All (x16) @con0 <b>by</b> i.ss01;</p><p> </p><p><b>sub</b> @Uppercase i' @All (x16) @vow0 <b>by</b> i.ss02;</p><p> </p><p>} LT;</p>
My alternates are split into consonants (con0, con1, con2) and vowels. The first part checks the combination of letters following the "Lietuvos Taryba", which is reoccurring phrase throughout the document, and changes /L accordingly. Since main #calt lookup comes later, this slightly cascades the substitutions and /T changes too.
Since I don't /L to be always followed by the default /i, I added substitution for it too, which changes sets based on a letter away from the phrase.
Finally, I added your substitution for capitals too.
0 -
It seems like you're tailoring your feature to a specific text -- your code is going to become massively convoluted if you try to accommodate every desired exception in your code rather than simply touching them up in the glyph palette. OpenType code really should be used for general solutions even if they are imperfect.
André1 -
OpenType lookups cannot be sensitive to line or paragraph boundaries since there are no glyphs that correspond to these. At best, lookups can recognize the ends of runs (by the absence of any glyph), though note that runs can be affected by several things, including line breaks, bidi, styling, and script itemization. If you want an effect at the beginning or end of a paragraph, then the only way to do that would be to have a feature applied to the first or last glyph/character/cluster of the paragraph.1
-
André G. Isaak said:It seems like you're tailoring your feature to a specific text -- your code is going to become massively convoluted if you try to accommodate every desired exception in your code rather than simply touching them up in the glyph palette. OpenType code really should be used for general solutions even if they are imperfect.0
Categories
- All Categories
- 43 Introductions
- 3.7K Typeface Design
- 798 Font Technology
- 1K Technique and Theory
- 617 Type Business
- 444 Type Design Critiques
- 541 Type Design Software
- 30 Punchcutting
- 136 Lettering and Calligraphy
- 83 Technique and Theory
- 53 Lettering Critiques
- 483 Typography
- 301 History of Typography
- 114 Education
- 68 Resources
- 498 Announcements
- 79 Events
- 105 Job Postings
- 148 Type Releases
- 165 Miscellaneous News
- 269 About TypeDrawers
- 53 TypeDrawers Announcements
- 116 Suggestions and Bug Reports