Implement remaining precomposed accented letters.

This commit is contained in:
John McWilliams 2025-03-13 10:36:42 -04:00
parent 7ad6563c45
commit bcec6ed4ca
4 changed files with 130 additions and 17 deletions

View file

@ -9,12 +9,49 @@ glyph-block Letter-Greek-Orthography : begin
# Link localization forms # Link localization forms
link-gr LocalizedForm.IPPH 'a' 'a/doubleStorey' link-gr LocalizedForm.IPPH 'a' 'a/doubleStorey'
link-gr LocalizedForm.IPPH 'aDieresis' 'aDieresis/doubleStorey' link-gr LocalizedForm.IPPH 'aGrave' 'aGrave/doubleStorey'
link-gr LocalizedForm.IPPH 'aRetroflexHook' 'aRetroflexHook/doubleStorey' link-gr LocalizedForm.IPPH 'aAcute' 'aAcute/doubleStorey'
link-gr LocalizedForm.IPPH 'g' 'g/doubleStorey' link-gr LocalizedForm.IPPH 'aCircum' 'aCircum/doubleStorey'
link-gr LocalizedForm.IPPH 'gBar' 'gScriptBar' link-gr LocalizedForm.IPPH 'aTilde' 'aTilde/doubleStorey'
link-gr LocalizedForm.IPPH 'aDieresis' 'aDieresis/doubleStorey'
link-gr LocalizedForm.IPPH 'aRing' 'aRing/doubleStorey'
link-gr LocalizedForm.IPPH 'aMacron' 'aMacron/doubleStorey'
link-gr LocalizedForm.IPPH 'aBreve' 'aBreve/doubleStorey'
link-gr LocalizedForm.IPPH 'aOgonek' 'aOgonek/doubleStorey'
link-gr LocalizedForm.IPPH 'aCaron' 'aCaron/doubleStorey'
link-gr LocalizedForm.IPPH 'aDieresisMacron' 'aDieresisMacron/doubleStorey'
link-gr LocalizedForm.IPPH 'aDotMacron' 'aDotMacron/doubleStorey'
link-gr LocalizedForm.IPPH 'aRingAcute' 'aRingAcute/doubleStorey'
link-gr LocalizedForm.IPPH 'aDblGrave' 'aDblGrave/doubleStorey'
link-gr LocalizedForm.IPPH 'aInvBreve' 'aInvBreve/doubleStorey'
link-gr LocalizedForm.IPPH 'aDot' 'aDot/doubleStorey'
link-gr LocalizedForm.IPPH 'aRetroflexHook' 'aRetroflexHook/doubleStorey'
link-gr LocalizedForm.IPPH 'aBelowring' 'aBelowring/doubleStorey'
link-gr LocalizedForm.IPPH 'aRightHalfRing' 'aRightHalfRing/doubleStorey'
link-gr LocalizedForm.IPPH 'aBelowdot' 'aBelowdot/doubleStorey'
link-gr LocalizedForm.IPPH 'aHook' 'aHook/doubleStorey'
link-gr LocalizedForm.IPPH 'aCircumAcute' 'aCircumAcute/doubleStorey'
link-gr LocalizedForm.IPPH 'aCircumGrave' 'aCircumGrave/doubleStorey'
link-gr LocalizedForm.IPPH 'aCircumHook' 'aCircumHook/doubleStorey'
link-gr LocalizedForm.IPPH 'aCircumTilde' 'aCircumTilde/doubleStorey'
link-gr LocalizedForm.IPPH 'aCircumBelowdot' 'aCircumBelowdot/doubleStorey'
link-gr LocalizedForm.IPPH 'aBreveAcute' 'aBreveAcute/doubleStorey'
link-gr LocalizedForm.IPPH 'aBreveGrave' 'aBreveGrave/doubleStorey'
link-gr LocalizedForm.IPPH 'aBreveHook' 'aBreveHook/doubleStorey'
link-gr LocalizedForm.IPPH 'aBreveTilde' 'aBreveTilde/doubleStorey'
link-gr LocalizedForm.IPPH 'aBreveBelowdot' 'aBreveBelowdot/doubleStorey'
link-gr LocalizedForm.IPPH 'grek/beta' 'latn/beta' link-gr LocalizedForm.IPPH 'g' 'g/doubleStorey'
link-gr LocalizedForm.IPPH 'grek/theta' 'grek/theta/nonCursive' link-gr LocalizedForm.IPPH 'gCircum' 'gCircum/doubleStorey'
link-gr LocalizedForm.IPPH 'grek/chi' 'latn/chi' link-gr LocalizedForm.IPPH 'gBreve' 'gBreve/doubleStorey'
link-gr LocalizedForm.IPPH 'gDot' 'gDot/doubleStorey'
link-gr LocalizedForm.IPPH 'gCedilla' 'gCedilla/doubleStorey'
link-gr LocalizedForm.IPPH 'gBar' 'gScriptBar'
link-gr LocalizedForm.IPPH 'gCaron' 'gCaron/doubleStorey'
link-gr LocalizedForm.IPPH 'gAcute' 'gAcute/doubleStorey'
link-gr LocalizedForm.IPPH 'gMacron' 'gMacron/doubleStorey'
link-gr LocalizedForm.IPPH 'grek/beta' 'latn/beta'
link-gr LocalizedForm.IPPH 'grek/theta' 'grek/theta/nonCursive'
link-gr LocalizedForm.IPPH 'grek/chi' 'latn/chi'

View file

@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-A : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Mark-Shared-Metrics : markHalfStroke glyph-block-import Mark-Shared-Metrics : markHalfStroke
glyph-block-import Letter-Shared : CreateAccentedComposition CreateTurnedLetter glyph-block-import Letter-Shared : CreateAccentedComposition CreateMultiAccentedComposition CreateTurnedLetter
glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight ArcStartSerif glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight ArcStartSerif
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar RetroflexHook glyph-block-import Letter-Shared-Shapes : RightwardTailedBar RetroflexHook
glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart
@ -299,7 +299,68 @@ glyph-block Letter-Latin-Lower-A : begin
CreateTurnedLetter 'turnaScript' 0x252 'aScript' HalfAdvance (XH / 2) CreateTurnedLetter 'turnaScript' 0x252 'aScript' HalfAdvance (XH / 2)
CreateTurnedLetter 'turnAScript' 0x2C70 'AScript' HalfAdvance (CAP / 2) CreateTurnedLetter 'turnAScript' 0x2C70 'AScript' HalfAdvance (CAP / 2)
CreateAccentedComposition 'aDieresis' 0xE4 'a' 'dieresisAbove' CreateAccentedComposition 'aGrave' 0xE0 'a' 'graveAbove'
CreateAccentedComposition 'aDieresis/doubleStorey' null 'a/doubleStorey' 'dieresisAbove' CreateAccentedComposition 'aAcute' 0xE1 'a' 'acuteAbove'
CreateAccentedComposition 'aCircum' 0xE2 'a' 'circumflexAbove'
CreateAccentedComposition 'aTilde' 0xE3 'a' 'tildeAbove'
CreateAccentedComposition 'aDieresis' 0xE4 'a' 'dieresisAbove'
CreateAccentedComposition 'aRing' 0xE5 'a' 'ringAbove'
CreateAccentedComposition 'aMacron' 0x101 'a' 'macronAbove'
CreateAccentedComposition 'aBreve' 0x103 'a' 'breveAbove'
CreateAccentedComposition 'aOgonek' 0x105 'a' 'ogonekBelow'
CreateAccentedComposition 'aCaron' 0x1CE 'a' 'caronAbove'
CreateAccentedComposition 'aDblGrave' 0x201 'a' 'doubleGraveAbove'
CreateAccentedComposition 'aInvBreve' 0x203 'a' 'archAbove'
CreateAccentedComposition 'aDot' 0x227 'a' 'dotAbove'
CreateAccentedComposition 'aBelowring' 0x1E01 'a' 'ringBelow'
CreateAccentedComposition 'aBelowdot' 0x1EA1 'a' 'dotBelow'
CreateAccentedComposition 'aHook' 0x1EA3 'a' 'hookAbove'
CreateAccentedComposition 'aRightHalfRing' 0x1E9A 'a' 'rightHalfCircleTR'
CreateMultiAccentedComposition 'aDieresisMacron' 0x1DF 'a' { 'dieresisAbove' 'macronAbove' }
CreateMultiAccentedComposition 'aDotMacron' 0x1E1 'a' { 'dotAbove' 'macronAbove' }
CreateMultiAccentedComposition 'aRingAcute' 0x1FB 'a' { 'ringAbove' 'acuteAbove' }
CreateMultiAccentedComposition 'aCircumAcute' 0x1EA5 'a' { 'circumflexAbove' 'acuteAbove' }
CreateMultiAccentedComposition 'aCircumGrave' 0x1EA7 'a' { 'circumflexAbove' 'graveAbove' }
CreateMultiAccentedComposition 'aCircumHook' 0x1EA9 'a' { 'circumflexAbove' 'hookAbove' }
CreateMultiAccentedComposition 'aCircumTilde' 0x1EAB 'a' { 'circumflexAbove' 'tildeAbove' }
CreateMultiAccentedComposition 'aCircumBelowdot' 0x1EAD 'a' { 'circumflexAbove' 'dotBelow' }
CreateMultiAccentedComposition 'aBreveAcute' 0x1EAF 'a' { 'breveAbove' 'acuteAbove' }
CreateMultiAccentedComposition 'aBreveGrave' 0x1EB1 'a' { 'breveAbove' 'graveAbove' }
CreateMultiAccentedComposition 'aBreveHook' 0x1EB3 'a' { 'breveAbove' 'hookAbove' }
CreateMultiAccentedComposition 'aBreveTilde' 0x1EB5 'a' { 'breveAbove' 'tildeAbove' }
CreateMultiAccentedComposition 'aBreveBelowdot' 0x1EB7 'a' { 'breveAbove' 'dotBelow' }
CreateAccentedComposition 'aGrave/doubleStorey' null 'a/doubleStorey' 'graveAbove'
CreateAccentedComposition 'aAcute/doubleStorey' null 'a/doubleStorey' 'acuteAbove'
CreateAccentedComposition 'aCircum/doubleStorey' null 'a/doubleStorey' 'circumflexAbove'
CreateAccentedComposition 'aTilde/doubleStorey' null 'a/doubleStorey' 'tildeAbove'
CreateAccentedComposition 'aDieresis/doubleStorey' null 'a/doubleStorey' 'dieresisAbove'
CreateAccentedComposition 'aRing/doubleStorey' null 'a/doubleStorey' 'ringAbove'
CreateAccentedComposition 'aMacron/doubleStorey' null 'a/doubleStorey' 'macronAbove'
CreateAccentedComposition 'aBreve/doubleStorey' null 'a/doubleStorey' 'breveAbove'
CreateAccentedComposition 'aOgonek/doubleStorey' null 'a/doubleStorey' 'ogonekBelow'
CreateAccentedComposition 'aCaron/doubleStorey' null 'a/doubleStorey' 'caronAbove'
CreateAccentedComposition 'aDblGrave/doubleStorey' null 'a/doubleStorey' 'doubleGraveAbove'
CreateAccentedComposition 'aInvBreve/doubleStorey' null 'a/doubleStorey' 'archAbove'
CreateAccentedComposition 'aDot/doubleStorey' null 'a/doubleStorey' 'dotAbove'
CreateAccentedComposition 'aBelowring/doubleStorey' null 'a/doubleStorey' 'ringBelow'
CreateAccentedComposition 'aBelowdot/doubleStorey' null 'a/doubleStorey' 'dotBelow'
CreateAccentedComposition 'aHook/doubleStorey' null 'a/doubleStorey' 'hookAbove'
CreateAccentedComposition 'aRightHalfRing/doubleStorey' null 'a/doubleStorey' 'rightHalfCircleAbove'
CreateMultiAccentedComposition 'aDieresisMacron/doubleStorey' null 'a/doubleStorey' { 'dieresisAbove' 'macronAbove' }
CreateMultiAccentedComposition 'aDotMacron/doubleStorey' null 'a/doubleStorey' { 'dotAbove' 'macronAbove' }
CreateMultiAccentedComposition 'aRingAcute/doubleStorey' null 'a/doubleStorey' { 'ringAbove' 'acuteAbove' }
CreateMultiAccentedComposition 'aCircumAcute/doubleStorey' null 'a/doubleStorey' { 'circumflexAbove' 'acuteAbove' }
CreateMultiAccentedComposition 'aCircumGrave/doubleStorey' null 'a/doubleStorey' { 'circumflexAbove' 'graveAbove' }
CreateMultiAccentedComposition 'aCircumHook/doubleStorey' null 'a/doubleStorey' { 'circumflexAbove' 'hookAbove' }
CreateMultiAccentedComposition 'aCircumTilde/doubleStorey' null 'a/doubleStorey' { 'circumflexAbove' 'tildeAbove' }
CreateMultiAccentedComposition 'aCircumBelowdot/doubleStorey' null 'a/doubleStorey' { 'circumflexAbove' 'dotBelow' }
CreateMultiAccentedComposition 'aBreveAcute/doubleStorey' null 'a/doubleStorey' { 'breveAbove' 'acuteAbove' }
CreateMultiAccentedComposition 'aBreveGrave/doubleStorey' null 'a/doubleStorey' { 'breveAbove' 'graveAbove' }
CreateMultiAccentedComposition 'aBreveHook/doubleStorey' null 'a/doubleStorey' { 'breveAbove' 'hookAbove' }
CreateMultiAccentedComposition 'aBreveTilde/doubleStorey' null 'a/doubleStorey' { 'breveAbove' 'tildeAbove' }
CreateMultiAccentedComposition 'aBreveBelowdot/doubleStorey' null 'a/doubleStorey' { 'breveAbove' 'dotBelow' }
CreateAccentedComposition 'aSbRsbUnderlineBelow' null 'a' 'sbRsbUnderlineBelow' CreateAccentedComposition 'aSbRsbUnderlineBelow' null 'a' 'sbRsbUnderlineBelow'

View file

@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-G : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors LeaningAnchor glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors LeaningAnchor
glyph-block-import Letter-Shared : CreateTurnedLetter glyph-block-import Letter-Shared : CreateAccentedComposition CreateTurnedLetter
glyph-block-import Letter-Shared-Shapes : OBarLeft OBarRight FlatHookDepth glyph-block-import Letter-Shared-Shapes : OBarLeft OBarRight FlatHookDepth
glyph-block-import Letter-Shared-Shapes : CurlyTail PalatalHook TopHook glyph-block-import Letter-Shared-Shapes : CurlyTail PalatalHook TopHook
@ -208,10 +208,10 @@ glyph-block Letter-Latin-Lower-G : begin
CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5] CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5]
select-variant "gBar" 0x1E5 (follow -- 'g') select-variant "gBar" 0x1E5 (follow -- 'g')
select-variant 'gScript' 0x261 (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'g') select-variant 'gScript' 0x261 (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'g')
select-variant 'GScript' 0xA7AC (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) select-variant 'GScript' 0xA7AC (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans'])
select-variant 'gScriptPalatalHook' 0x1D83 (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'gPalatalHook') select-variant 'gScriptPalatalHook' 0x1D83 (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'gPalatalHook')
select-variant 'gScriptBar' (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'gBar') select-variant 'gScriptBar' (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'gBar')
select-variant 'gScriptCrossedTail' 0xAB36 (follow -- [conditional-follow SLAB 'g/singleStoreyBentHook/autoSerifed/slab' 'g/singleStoreyBentHook/autoSerifed/sans']) select-variant 'gScriptCrossedTail' 0xAB36 (follow -- [conditional-follow SLAB 'g/singleStoreyBentHook/autoSerifed/slab' 'g/singleStoreyBentHook/autoSerifed/sans'])
alias 'cyrl/de.BGR' null 'gScript' alias 'cyrl/de.BGR' null 'gScript'
@ -238,3 +238,20 @@ glyph-block Letter-Latin-Lower-G : begin
include : intersection include : intersection
VBar.r (RightSB - BBD) Descender XH BBS VBar.r (RightSB - BBD) Descender XH BBS
SingleStorey.BentHookT spiro-outline [DivFrame 1] XH 1 BBS SingleStorey.BentHookT spiro-outline [DivFrame 1] XH 1 BBS
CreateAccentedComposition 'gCircum' 0x11D 'g' 'circumflexAbove'
CreateAccentedComposition 'gBreve' 0x11F 'g' 'breveAbove'
CreateAccentedComposition 'gDot' 0x121 'g' 'dotAbove'
CreateAccentedComposition 'gCedilla' 0x123 'g' 'turnCommaAbove'
CreateAccentedComposition 'gCaron' 0x1E7 'g' 'caronAbove'
CreateAccentedComposition 'gAcute' 0x1F5 'g' 'acuteAbove'
CreateAccentedComposition 'gMacron' 0x1E21 'g' 'macronAbove'
CreateAccentedComposition 'gCircum/doubleStorey' null 'g/doubleStorey' 'circumflexAbove'
CreateAccentedComposition 'gBreve/doubleStorey' null 'g/doubleStorey' 'breveAbove'
CreateAccentedComposition 'gDot/doubleStorey' null 'g/doubleStorey' 'dotAbove'
CreateAccentedComposition 'gCaron/doubleStorey' null 'g/doubleStorey' 'caronAbove'
CreateAccentedComposition 'gAcute/doubleStorey' null 'g/doubleStorey' 'acuteAbove'
CreateAccentedComposition 'gMacron/doubleStorey' null 'g/doubleStorey' 'macronAbove'
derive-composites 'gCedilla/doubleStorey' null 'g/doubleStorey' 'cedillaExtShapeBelowSOArc'

View file

@ -38,7 +38,6 @@ export : define decompOverrides : object
# Latvians use comma instead of cedillas in several letters. # Latvians use comma instead of cedillas in several letters.
# Record them as custom decomposition. # Record them as custom decomposition.
0x122 { 'G' 'commaBelow' } 0x122 { 'G' 'commaBelow' }
0x123 { 'g' 'turnCommaAbove' }
0x136 { 'K' 'commaBelow' } 0x136 { 'K' 'commaBelow' }
0x137 { 'k' 'commaBelow' } 0x137 { 'k' 'commaBelow' }
0x13B { 'L' 'commaBelow' } 0x13B { 'L' 'commaBelow' }
@ -165,7 +164,6 @@ export : define decompOverrides : object
0x1E08 { 'CCedilla' 'acuteAbove' } 0x1E08 { 'CCedilla' 'acuteAbove' }
0x1E09 { 'cCedilla' 'acuteAbove' } 0x1E09 { 'cCedilla' 'acuteAbove' }
0x1E9A { 'a' 'rightHalfCircleTR' }
0x1E9C { 'longs' 'shortSlashOver' } 0x1E9C { 'longs' 'shortSlashOver' }
0x1EDA { 'OHorn' 'acuteAbove' } 0x1EDA { 'OHorn' 'acuteAbove' }
0x1EDB { 'oHorn' 'acuteAbove' } 0x1EDB { 'oHorn' 'acuteAbove' }