Handle breve too

This commit is contained in:
be5invis 2023-08-23 00:45:33 -07:00
parent 73df44d395
commit 9fbd76e59e
55 changed files with 1310 additions and 1172 deletions

View file

@ -1087,14 +1087,19 @@ glyph-block Mark-Above : begin
include : HBar.t (markMiddle - markExtend) (markMiddle + markExtend) aboveMarkTop (markFine * 2)
# Scaled-down glyphs for Vietnamese's secondary mark
define [VNSecondaryMark k] : glyph-proc
include : ScaleAround markMiddle aboveMarkMid 0.75 0.75
include : ApparentTranslate (1.5 * k * markExtend) (0.5 * AccentHeight)
set-mark-anchor 'above' markMiddle aboveMarkStack markMiddle aboveMarkStack
define [VNSecondaryMark s kx ky d] : glyph-proc
include : ScaleAround markMiddle aboveMarkMid s s
include : ApparentTranslate (1.5 * kx * markExtend) 0
local my : aboveMarkStack - 0.5 * ky * AccentHeight
set-mark-anchor 'above' markMiddle my markMiddle (my + d * AccentHeight)
derive-composites 'acuteAbove/viSecondary' null 'acuteAbove' [VNSecondaryMark 1]
derive-composites 'graveAbove/viSecondary' null 'graveAbove' [VNSecondaryMark (-1)]
derive-composites 'hookAbove/viSecondary' null 'hookAbove' [VNSecondaryMark 1]
derive-composites 'acuteAbove/viSide' null 'acuteAbove' [VNSecondaryMark 0.75 1 1 0]
derive-composites 'graveAbove/viSide' null 'graveAbove' [VNSecondaryMark 0.75 (-1) 1 0]
derive-composites 'hookAbove/viSide' null 'hookAbove' [VNSecondaryMark 0.75 1 1 0]
derive-composites 'acuteAbove/viCenter' null 'acuteAbove' [VNSecondaryMark 0.875 0 1.75 0.5]
derive-composites 'graveAbove/viCenter' null 'graveAbove' [VNSecondaryMark 0.875 0 1.75 0.5]
derive-composites 'hookAbove/viCenter' null 'hookAbove' [VNSecondaryMark 0.875 0 1.75 0.5]
create-glyph 'leftParenAbove' 0x1AC1 : glyph-proc
set-width 0

View file

@ -68,32 +68,33 @@ export : define [buildLOCL sink para glyphStore] : begin
define [sx s] : lambda [t] : t.map : lambda [x] "\(x)/\(s)"
do "Decompose Vietnamese glyphs"
local initials : new Set
local medials : new Set
local finals : new Set
local decompositionSubstitutions {.}
loclVIT.lookups.push : AddLookup sink
.type 'gsub_multiple'
.substitutions decompositionSubstitutions
local vnDualAboveMarkCodePoints 'ẦẤẨỀẾỂỒỐỔầấẩềếểồốổ'
foreach ch vnDualAboveMarkCodePoints : begin
local viCircumflex 'ẦẤẨỀẾỂỒỐỔầấẩềếểồốổ'
local viBreve 'ẮẰẲằắẳ'
local viShiftableMarks { 'acuteAbove' 'graveAbove' 'hookAbove' }
foreach ch (viCircumflex + viBreve) : begin
local u : ch.codePointAt 0
local gn : glyphStore.queryNameByUnicode u
local g : glyphStore.queryByNameEnsured gn
local decomp : CvDecompose.get g
set decompositionSubstitutions.(gn) decomp
initials.add decomp.0
medials.add decomp.1
finals.add decomp.2
loclVIT.lookups.push : AddLookup sink
.type 'gsub_chaining'
.rules : list
chain-rule
[Array.from initials ] ~> nothing
[Array.from medials ] ~> nothing
[Array.from finals ] ~> [sx 'viSecondary']
{'A' 'a' 'E' 'e' 'O' 'o'} ~> nothing
{'circumflexAbove'} ~> nothing
viShiftableMarks ~> [sx 'viSide']
chain-rule
{'A' 'a'} ~> nothing
{'breveAbove'} ~> nothing
viShiftableMarks ~> [sx 'viCenter']
EndLookupBlock.Front rec sink