Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add five new Latin letters from Unicode 16.0 #2501

Merged
merged 2 commits into from
Sep 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions changes/31.7.0.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
* Fix Macedonian Cyrillic Gje under italics (#2493).
* Improve widths of overline marks of Serbian italic lower Ghe/Pe/Te.
* Remove crossbar variants for `Z`/`z` when under Polish locale (`PLK`) to avoid confusion with the handwritten `Ż`/`ż` allograph, `Ƶ`/`ƶ`.
* Make serif variants for Latin Capital/Small Schwa (`Ə`/`ə`) only appear under Turkic (Turkish/Azerbaijani/etc.) locales (`TRK`, `AZE`, `GAG`, `KAZ`, `TAT`, `CRT`) as other languages that use schwa as well as the IPA unify its metrics with Open O (`Ɔ`/`ɔ`) or a literal turned e (`Ǝ`/`ǝ`).
* Make serif variants for Latin Capital/Small Schwa (`Ə`/`ə`) only appear under Turkic (Turkish/Azerbaijani/etc.) locales (`TRK`, `AZE`, `GAG`, `KAZ`, `TAT`, `CRT`) as other languages that use Latin Schwa (including the IPA) unify its metrics with Open O (`Ɔ`/`ɔ`) or a literal Turned E (`Ǝ`/`ǝ`).
* Add Characters:
- COUNTING ROD UNIT DIGIT ONE (`U+1D360`) ... COUNTING ROD TENS DIGIT NINE (`U+1D371`).
- COMPOSITION SYMBOL (`U+2384`).
- HEAVY CIRCLED SALTIRE (`U+2B59`).
- DRIVE SLOW SIGN (`U+26DA`).
- WHITE DIAMOND IN SQUARE (`U+26CB`).
- SQUARED SALTIRE (`U+26DD`).
- FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE (`U+26DE`).
- DRIVE SLOW SIGN (`U+26DA`).
- SQUARED SALTIRE (`U+26DD`) ... FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE (`U+26DE`).
- HEAVY CIRCLED SALTIRE (`U+2B59`).
- TOP HALF LEFT PARENTHESIS (`U+2E59`) ... BOTTOM HALF RIGHT PARENTHESIS (`U+2E5C`).
- LATIN CAPITAL LETTER S WITH DIAGONAL STROKE (`U+A7CC`) ... LATIN SMALL LETTER S WITH DIAGONAL STROKE (`U+A7CD`).
- LATIN CAPITAL LETTER LAMBDA (`U+A7DA`) ... LATIN CAPITAL LETTER LAMBDA WITH STROKE (`U+A7DC`).
- COUNTING ROD UNIT DIGIT ONE (`U+1D360`) ... COUNTING ROD TENS DIGIT NINE (`U+1D371`).
15 changes: 8 additions & 7 deletions packages/font-glyphs/src/letter/latin/lower-y.ptl
Original file line number Diff line number Diff line change
Expand Up @@ -313,13 +313,13 @@ glyph-block Letter-Latin-Lower-Y : begin
include : MarkSet.b
include : Shapes.SmallLambdaShapeFromHookTop Ascender 0

create-glyph "lambdaSlash.\(suffix)" : glyph-proc
create-glyph "latn/lambdaStroke.\(suffix)" : glyph-proc
include : MarkSet.b
include : union
FlatSlashShape [mix SB RightSB 0.45] [mix 0 CAP 0.8] (OverlayStroke / 2)
Shapes.SmallLambdaShape Ascender 0

create-glyph "lambdaSlashFHT.\(suffix)" : glyph-proc
create-glyph "latn/lambdaStrokeFHT.\(suffix)" : glyph-proc
include : MarkSet.b
include : union
FlatSlashShape [mix SB RightSB 0.45] [mix 0 CAP 0.8] (OverlayStroke / 2)
Expand All @@ -336,10 +336,10 @@ glyph-block Letter-Latin-Lower-Y : begin
set-base-anchor 'strike' Middle (XH / 2 - Descender)
include : Shapes.SmallYShape CAP 0

alias 'grek/lambda.tailedTurnSerifless' null 'grek/lambdaFHT.straightTurnSerifless'
alias 'lambdaSlash.tailedTurnSerifless' null 'lambdaSlashFHT.straightTurnSerifless'
alias 'grek/lambda.curlyTailedTurnSerifless' null 'grek/lambdaFHT.curlyTurnSerifless'
alias 'lambdaSlash.curlyTailedTurnSerifless' null 'lambdaSlashFHT.curlyTurnSerifless'
alias 'grek/lambda.tailedTurnSerifless' null 'grek/lambdaFHT.straightTurnSerifless'
alias 'latn/lambdaStroke.tailedTurnSerifless' null 'latn/lambdaStrokeFHT.straightTurnSerifless'
alias 'grek/lambda.curlyTailedTurnSerifless' null 'grek/lambdaFHT.curlyTurnSerifless'
alias 'latn/lambdaStroke.curlyTailedTurnSerifless' null 'latn/lambdaStrokeFHT.curlyTurnSerifless'

define Cursive : namespace
export : define [Arc top bottom] : new-glyph : glyph-proc
Expand Down Expand Up @@ -434,7 +434,8 @@ glyph-block Letter-Latin-Lower-Y : begin
select-variant 'yLoop' 0x1EFF (shapeFrom -- 'y')

select-variant 'grek/lambda' 0x3BB
select-variant 'lambdaSlash' 0x19B (follow -- 'grek/lambda')
alias 'latn/lambda' 0xA7DB 'grek/lambda'
select-variant 'latn/lambdaStroke' 0x19B (follow -- 'grek/lambda')

# Blackboard
glyph-block-import Letter-Blackboard : BBS BBD
Expand Down
5 changes: 5 additions & 0 deletions packages/font-glyphs/src/letter/latin/upper-y.ptl
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ glyph-block Letter-Latin-Upper-Y : begin
link-reduced-variant 'Y/sansSerif' 'Y' MathSansSerif
select-variant 'smcpY' 0x28F (follow -- 'Y')
select-variant 'YHookTop' 0x1B3 (follow -- 'Y')
select-variant 'Y/LambdaBase' (shapeFrom -- 'Y')
CreateAccentedComposition 'YBar/LambdaBase' null 'Y/LambdaBase' 'barOver'

CreateTurnedLetter 'turnY/sansSerif' 0x2144 'Y/sansSerif' HalfAdvance (CAP / 2)

Expand All @@ -144,6 +146,9 @@ glyph-block Letter-Latin-Upper-Y : begin
create-glyph 'YStroke/Overlay' : HOverlayBar ([mix 0 SB 0.5]) ([mix Width RightSB 0.5]) [mix 0 CAP 0.75]
derive-composites 'YStroke' 0x24E 'Y' 'YStroke/Overlay'

CreateTurnedLetter 'latn/Lambda' 0xA7DA 'Y/LambdaBase' HalfAdvance (CAP / 2)
CreateTurnedLetter 'latn/LambdaStroke' 0xA7DC 'YBar/LambdaBase' HalfAdvance (CAP / 2)

select-variant 'currency/yenSign' 0xA5 (follow -- 'Y')

# Blackboard
Expand Down
29 changes: 15 additions & 14 deletions packages/font-glyphs/src/meta/unicode-knowledge.ptl
Original file line number Diff line number Diff line change
Expand Up @@ -182,24 +182,13 @@ export : define decompOverrides : object
0x1FE2 { 'grek/upsilon' 'dialytikaVariaAbove' }
0x1FE3 { 'grek/upsilon' 'dialytikaOxiaAbove' }

0x2c61 { 'l' 'dblBarOver' }
0x2c65 { 'a' 'shortSlash' }
0x2c66 { 't' 'longSlash' }
0x2C61 { 'l' 'dblBarOver' }
0x2C65 { 'a' 'shortSlash' }
0x2C66 { 't' 'longSlash' }

0xA74A { 'O' 'hStrike' }
0xA74B { 'o' 'hStrike' }
0xA799 { 'f' 'barOver' }
0xA7B8 { 'U' 'longSlash' }
0xA7B9 { 'u' 'shortSlash' }
0xA7BA { 'grek/Alpha' 'EgyptologicalYodTonos' }
0xA7BC { 'grek/Iota' 'EgyptologicalYodTonos' }
0xA7BE { 'U/withTonos' 'EgyptologicalYodTonos' }
0xA7BB { 'a' 'EgyptologicalYodAbove' }
0xA7BD { 'i' 'EgyptologicalYodAbove' }
0xA7BF { 'u' 'EgyptologicalYodAbove' }
0xA7C9 { 'S' 'hStrike' }
0xA7CA { 's' 'hStrike' }

0xA7A0 { 'G' 'oblStrike' }
0xA7A1 { 'g' 'oblStrike' }
0xA7A2 { 'K' 'oblStrike' }
Expand All @@ -210,6 +199,18 @@ export : define decompOverrides : object
0xA7A7 { 'r' 'oblStrike' }
0xA7A8 { 'S' 'oblStrike' }
0xA7A9 { 's' 'oblStrike' }
0xA7B8 { 'U' 'longSlash' }
0xA7B9 { 'u' 'shortSlash' }
0xA7BA { 'grek/Alpha' 'EgyptologicalYodTonos' }
0xA7BC { 'grek/Iota' 'EgyptologicalYodTonos' }
0xA7BE { 'U/withTonos' 'EgyptologicalYodTonos' }
0xA7BB { 'a' 'EgyptologicalYodAbove' }
0xA7BD { 'i' 'EgyptologicalYodAbove' }
0xA7BF { 'u' 'EgyptologicalYodAbove' }
0xA7C9 { 'S' 'hStrike' }
0xA7CA { 's' 'hStrike' }
0xA7CC { 'S' 'longSlash' }
0xA7CD { 's' 'shortSlash' }

0xAB30 { 'scripta' 'hStrike' }
0xAB3E { 'frak/o' 'shortSlash' }
Expand Down
6 changes: 6 additions & 0 deletions params/variants.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5719,13 +5719,15 @@ descriptionAffix = "straight shape"
selectorAffix."grek/Lambda" = "straight"
selectorAffix."grek/Lambda/sansSerif" = "straight"
selectorAffix."cyrl/Yus" = "straight"
selectorAffix."Y/LambdaBase" = "straight"

[prime.capital-lambda.variants-buildup.stages.body.curly]
rank = 2
descriptionAffix = "curly shape"
selectorAffix."grek/Lambda" = "curly"
selectorAffix."grek/Lambda/sansSerif" = "curly"
selectorAffix."cyrl/Yus" = "curly"
selectorAffix."Y/LambdaBase" = "curly"

[prime.capital-lambda.variants-buildup.stages.serifs.serifless]
rank = 1
Expand All @@ -5734,27 +5736,31 @@ descriptionJoiner = "without"
selectorAffix."grek/Lambda" = "serifless"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "serifless"

[prime.capital-lambda.variants-buildup.stages.serifs.top-serifed]
rank = 2
descriptionAffix = "serifs at top"
selectorAffix."grek/Lambda" = "topSerifed"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "baseSerifed"

[prime.capital-lambda.variants-buildup.stages.serifs.base-serifed]
rank = 3
descriptionAffix = "serifs at base"
selectorAffix."grek/Lambda" = "baseSerifed"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "serifed"

[prime.capital-lambda.variants-buildup.stages.serifs.tri-serifed]
rank = 4
descriptionAffix = "serifs at both top and base"
selectorAffix."grek/Lambda" = "triSerifed"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "serifed"



Expand Down