* Add modifier letters stress and high/low tone. (#2405)

* Improve glyph visual for `mdfUnaspirated`.
* Fix side bearings for `mdfSecondaryStress`.
This commit is contained in:
John McWilliams 2024-07-02 20:59:46 -04:00 committed by GitHub
parent 7a8f18f3b0
commit f45eab7759
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 32 additions and 9 deletions

5
changes/30.3.2.md Normal file
View file

@ -0,0 +1,5 @@
* Fix side bearings of `U+02CC` under Quasi-Proportional.
* Improve glyph shape for `U+02ED`.
* Add characters:
- MODIFIER LETTER STRESS AND HIGH TONE (`U+A720`).
- MODIFIER LETTER STRESS AND LOW TONE (`U+A721`).

View file

@ -79,7 +79,6 @@ export : define decompOverrides : object
0x2DD { 'markBaseSpace' 'doubleAcuteAbove' }
0x2DF { 'markBaseSpace' 'crossAbove' }
0x2EC { 'markBaseSpace' 'caronBelow' }
0x2ED { 'markBaseSpace' 'dblOverlineAbove' }
0x2EF { 'markBaseSpace' 'downArrowHeadBelow' }
0x2F0 { 'markBaseSpace' 'upArrowHeadBelow' }
0x2F1 { 'markBaseSpace' 'lessBelow' }

View file

@ -11,8 +11,9 @@ glyph-block Symbol-Punctuation-Dashes : begin
glyph-block-import Common-Derivatives
glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace
define openBoxGap : Math.max (Stroke * 1.25) (XH / 4)
do 'underscore'
define openBoxGap : Math.max (Stroke * 1.25) (XH / 4)
define [OpenBoxSide y] : union
VBar.l SB y (y + openBoxGap) OperatorStroke
VBar.r RightSB y (y + openBoxGap) OperatorStroke
@ -57,6 +58,9 @@ glyph-block Symbol-Punctuation-Dashes : begin
create-glyph 'figureDash' 0x2012 : HBar.m SB RightSB SymbolMid
create-glyph 'overline' 0x203E : HBar.t SB RightSB CAP
create-glyph 'mdfUnaspirated' 0x2ED : composite-proc
HBar.t SB RightSB CAP
HBar.t SB RightSB (CAP - openBoxGap)
create-glyph 'enDash' 0x2013 : glyph-proc
set-width Width
@ -74,11 +78,11 @@ glyph-block Symbol-Punctuation-Dashes : begin
set-width emDashWidth
include : dispiro
widths.center
flat (SB + [HSwToV HalfStroke]) (SymbolMid + [Math.max ((RightSB - SB) * 0.55) (XH * 0.5)]) [heading Downward]
curl (SB + [HSwToV HalfStroke]) (SymbolMid + SmallArchDepthB)
flat (SB + [HSwToV HalfStroke] + OX) (SymbolMid + [Math.max ((RightSB - SB) * 0.55) (XH * 0.5)]) [heading Downward]
curl (SB + [HSwToV HalfStroke] + OX) (SymbolMid + SmallArchDepthB)
arcvh
flat Middle SymbolMid
curl (emDashWidth - SB) SymbolMid [heading Rightward]
curl (emDashWidth - SB - OX) SymbolMid [heading Rightward]
derive-multi-part-glyphs 'hyphenDieresis' 0x2E1A { 'figureDash' 'dieresisAbove'}
function [src sel] : composite-proc

View file

@ -14,6 +14,10 @@ glyph-block Symbol-Other-Phonetic : begin
local toneMarkLeft : mix SB RightSB 0.1
local toneMarkRight : Width - toneMarkLeft
define [dblToneMarkLeft df] : mix df.leftSB df.rightSB 0.1
define [dblToneMarkRight df] : mix df.leftSB df.rightSB 0.9
define [dblToneMarkMiddle df] : mix [dblToneMarkLeft df] [dblToneMarkRight df] 0.5
create-glyph 'triangleColon' 0x2D0 : glyph-proc
include : MarkSet.e
include : union
@ -35,7 +39,7 @@ glyph-block Symbol-Other-Phonetic : begin
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
define [yOfToneNeutral tone] : mix DotRadius (CAP - DotRadius) (tone / 4)
define [yOfToneDepart a b p] : mix (CAP * a + OperatorStroke / 2) (CAP * b - OperatorStroke / 2) p
define [yOfToneDepart a b p] : mix (CAP * a + OperatorStroke / 2) (CAP * b - OperatorStroke / 2) p
foreach tone [range 4 downtill 0] : begin
create-glyph ('tone' + tone) (0x2E5 + 4 - tone) : glyph-proc
@ -122,7 +126,7 @@ glyph-block Symbol-Other-Phonetic : begin
list 'departingToneYin' 0x2EA 0 0.5 0
list 'departingToneYang' 0x2EB 0 0.5 0.5
list 'beginHighTone' 0x2F9 0.6 1 1.0
list 'beginLowTone' 0x2FB 0 0.4 0
list 'beginLowTone' 0x2FB 0 0.4 0
foreach { name code a b pos } [items-of DepartingToneConfig] : begin
create-glyph name code : glyph-proc
include : VBar.l toneMarkLeft (CAP * a) (CAP * b) OperatorStroke
@ -135,3 +139,14 @@ glyph-block Symbol-Other-Phonetic : begin
create-glyph name code : glyph-proc
include : VBar.r toneMarkRight (CAP * a) (CAP * b) OperatorStroke
include : HBar.m toneMarkLeft (toneMarkRight - TINY) [yOfToneDepart a b pos] OperatorStroke
local DblToneConfig : list
list 'stressAndHighTone' 0xA720 0.6 1 1.0
list 'stressAndLowTone' 0xA721 0 0.4 0
foreach { name code a b pos } [items-of DblToneConfig] : begin
create-glyph name code : glyph-proc
local df : include : DivFrame 1 3.75
local fine : OperatorStroke * df.mvs / Stroke
include : VBar.l [dblToneMarkLeft df] (CAP * a) (CAP * b) fine
include : VBar.m [dblToneMarkMiddle df] (CAP * a) (CAP * b) fine
include : HBar.m ([dblToneMarkLeft df] + TINY) [dblToneMarkRight df] [yOfToneDepart a b pos] OperatorStroke

View file

@ -160,7 +160,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
alias 'grek/numberSign' 0x374 'prime'
alias 'mdfDoublePrime' 0x2BA 'doubleprime'
derive-composites 'grek/lowNumberSign' 0x375 'prime'
derive-composites 'grek/lowNumberSign' 0x375 'grek/numberSign'
ApparentTranslate 0 ([mix [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] quoteBottom (-1)] - quoteTop)
create-glyph 'doubleSuspensionMark' 0x2E44 : composite-proc
@ -217,7 +217,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
'raisedComma' 'closeSingleQuote'
alias 'mdfStress' 0x2C8 'asciiSingleQuote/body/straight'
turned 'mdfSecondaryStress' 0x2CC 'asciiSingleQuote/body/straight' Middle (XH / 2)
turned 'mdfSecondaryStress' 0x2CC 'asciiSingleQuote/body/straight' [DivFrame para.diversityF].middle (XH / 2)
create-glyph 'asciiDoubleQuote' 0x22 : glyph-proc
local dfSingle : DivFrame para.diversityF