* Add Characters

- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
  - MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
  - MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
  - MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
  - MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
  - MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
  - MODIFIER LETTER RAISED COLON (`U+02F8`);
  - MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
  - MODIFIER LETTER END HIGH TONE (`U+02FA`);
  - MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
  - MODIFIER LETTER END LOW TONE (`U+02FC`);
  - MODIFIER LETTER SHELF (`U+02FD`);
  - MODIFIER LETTER OPEN SHELF (`U+02FE`);
  - MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
  - COMBINING LEFT ARROW BELOW (`U+20EE`);
  - COMBINING RIGHT ARROW BELOW (`U+20EF`);
This commit is contained in:
be5invis 2022-03-24 22:46:19 -07:00
parent eabfd4b59e
commit 0c2d989b76
9 changed files with 101 additions and 13 deletions

17
changes/15.1.0.md Normal file
View file

@ -0,0 +1,17 @@
* Add Characters
- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
- MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
- MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
- MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
- MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
- MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
- MODIFIER LETTER RAISED COLON (`U+02F8`);
- MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
- MODIFIER LETTER END HIGH TONE (`U+02FA`);
- MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
- MODIFIER LETTER END LOW TONE (`U+02FC`);
- MODIFIER LETTER SHELF (`U+02FD`);
- MODIFIER LETTER OPEN SHELF (`U+02FE`);
- MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
- COMBINING LEFT ARROW BELOW (`U+20EE`);
- COMBINING RIGHT ARROW BELOW (`U+20EF`);

View file

@ -182,6 +182,23 @@ glyph-block Mark-Below : begin
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid set-base-anchor 'belowBrace' markMiddle belowMarkMid
create-glyph 'shelfBelow' : glyph-proc
set-width 0
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : VBar (RightSB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
create-glyph 'openShelfBelow' : glyph-proc
set-width 0
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
# Turned below marks # Turned below marks
define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin
derive-glyphs gnBelowMark unicodeBelowMark gnAboveMark : function [src gr] : glyph-proc derive-glyphs gnBelowMark unicodeBelowMark gnAboveMark : function [src gr] : glyph-proc
@ -230,6 +247,8 @@ glyph-block Mark-Below : begin
TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove' TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove'
TurnAboveMarkToBelow 'leftHalfCircleBelow' 0x31C 'rightHalfCircleAbove' TurnAboveMarkToBelow 'leftHalfCircleBelow' 0x31C 'rightHalfCircleAbove'
TurnAboveMarkToBelow 'rightHalfCircleBelow' 0x339 'leftHalfCircleAbove' TurnAboveMarkToBelow 'rightHalfCircleBelow' 0x339 'leftHalfCircleAbove'
TurnAboveMarkToBelow 'leftArrowBelow' 0x20EE 'rightArrowAbove'
TurnAboveMarkToBelow 'rightArrowBelow' 0x20EF 'leftArrowAbove'
create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc
set-width 0 set-width 0

View file

@ -9,7 +9,7 @@ glyph-block Symbol-Punctuation-Ascii-Marks : 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 : markExtend glyph-block-import Mark-Shared-Metrics : markExtend
glyph-block-import Mark-Above : aboveMarkTop glyph-block-import Mark-Above : aboveMarkTop aboveMarkMid
glyph-block-import Symbol-Punctuation-Quotes-And-Primes glyph-block-import Symbol-Punctuation-Quotes-And-Primes
define [MarkZoom w] : glyph-proc define [MarkZoom w] : glyph-proc
@ -48,3 +48,12 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
include [refer-glyph 'markBaseSpace'] AS_BASE ALSO_METRICS include [refer-glyph 'markBaseSpace'] AS_BASE ALSO_METRICS
include [refer-glyph 'ringAbove'] include [refer-glyph 'ringAbove']
include : MarkZoom currentGlyph.advanceWidth include : MarkZoom currentGlyph.advanceWidth
do "spacing centered marks"
define shift : ApparentTranslate 0 (SymbolMid - aboveMarkMid)
derive-composites 'mdfMidGrave' 0x2F4 'markBaseSpace' 'graveAbove' shift
derive-composites 'mdfMidDoubleGrave' 0x2F5 'markBaseSpace' 'doubleGraveAbove' shift
derive-composites 'mdfMidDoubleAcute' 0x2F6 'markBaseSpace' 'doubleAcuteAbove' shift
derive-composites 'mdfShelf' 0x2FD 'markBaseSpace' 'shelfBelow'
derive-composites 'mdfOpenShelf' 0x2FE 'markBaseSpace' 'openShelfBelow'

View file

@ -11,6 +11,8 @@ glyph-block Symbol-Other-Phonetic : begin
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
local triangleSize : Math.min (PeriodRadius) (XH / 5) local triangleSize : Math.min (PeriodRadius) (XH / 5)
local toneMarkLeft : mix SB RightSB 0.1
local toneMarkRight : Width - toneMarkLeft
create-glyph 'trianglecolon' 0x2D0 : glyph-proc create-glyph 'trianglecolon' 0x2D0 : glyph-proc
include : union include : union
@ -31,21 +33,23 @@ glyph-block Symbol-Other-Phonetic : begin
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4) define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
define [yOfToneNeutral tone] : mix DotRadius (CAP - DotRadius) (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
foreach tone [range 4 downtill 0] : begin foreach tone [range 4 downtill 0] : begin
create-glyph ('tone' + tone) (0x2E5 + 4 - tone) : glyph-proc create-glyph ('tone' + tone) (0x2E5 + 4 - tone) : glyph-proc
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke include : VBarRight toneMarkRight 0 CAP OperatorStroke
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfTone tone] OperatorStroke
create-glyph ('toneSandhi' + tone) (0xA712 + 4 - tone) : glyph-proc create-glyph ('toneSandhi' + tone) (0xA712 + 4 - tone) : glyph-proc
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfTone tone] OperatorStroke
create-glyph ('toneNeutral' + tone) (0xA708 + 4 - tone) : glyph-proc create-glyph ('toneNeutral' + tone) (0xA708 + 4 - tone) : glyph-proc
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke include : VBarRight toneMarkRight 0 CAP OperatorStroke
include : DotAt ([mix SB RightSB 0.1] + DotRadius) [yOfToneNeutral tone] DotRadius include : DotAt (toneMarkLeft + DotRadius) [yOfToneNeutral tone] DotRadius
create-glyph ('toneSandhiNeutral' + tone) (0xA70D + 4 - tone) : glyph-proc create-glyph ('toneSandhiNeutral' + tone) (0xA70D + 4 - tone) : glyph-proc
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
include : DotAt ([mix SB RightSB 0.9] - DotRadius) [yOfToneNeutral tone] DotRadius include : DotAt (toneMarkRight - DotRadius) [yOfToneNeutral tone] DotRadius
# Connected tones
foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Right Joining.set currentGlyph Joining.Classes.Right
@ -110,3 +114,22 @@ glyph-block Symbol-Other-Phonetic : begin
create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc
include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS
Joining.set currentGlyph Joining.Classes.Mid Joining.set currentGlyph Joining.Classes.Mid
# Departing tones
local DepartingToneConfig : list
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
foreach { name code a b pos } [items-of DepartingToneConfig] : begin
create-glyph name code : glyph-proc
include : VBarLeft toneMarkLeft (CAP * a) (CAP * b) OperatorStroke
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfToneDepart a b pos] OperatorStroke
local EnteringToneConfig : list
list 'endHighTone' 0x2FA 0.6 1 1.0
list 'endLowTone' 0x2FC 0 0.4 0
foreach { name code a b pos } [items-of EnteringToneConfig] : begin
create-glyph name code : glyph-proc
include : VBarRight toneMarkRight (CAP * a) (CAP * b) OperatorStroke
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfToneDepart a b pos] OperatorStroke

View file

@ -66,6 +66,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
alias 'mdfTurncomma' 0x2BB 'openSingleQuote' alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote' alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
alias 'mdfRevComma' 0x2BD 'revSingleQuote' alias 'mdfRevComma' 0x2BD 'revSingleQuote'
alias 'mdfDoubleApostrophe' 0x2EE 'closeDoubleQuote'
# Primes # Primes
create-glyph 'prime' 0x2032 : glyph-proc create-glyph 'prime' 0x2032 : glyph-proc

View file

@ -150,6 +150,14 @@ glyph-block Symbol-Punctuation-Small : begin
include : DrawAt df.middle [mix dr (XH - dr) k] (dr - overshoot) include : DrawAt df.middle [mix dr (XH - dr) k] (dr - overshoot)
include : DrawAt df.middle [mix dr (XH - dr) (1 - k)] (dr - overshoot) include : DrawAt df.middle [mix dr (XH - dr) (1 - k)] (dr - overshoot)
create-glyph "modifierLetterRaisedColon.\(suffix)" : glyph-proc
local df : DivFrame para.diversityII
set-width df.width
local k 0.9
local dr : DotRadius * kDotRadius
include : DrawAt df.middle (CAP - [mix dr (XH - dr) k]) (dr - overshoot)
include : DrawAt df.middle (CAP - [mix dr (XH - dr) (1 - k)]) (dr - overshoot)
create-glyph "semicolon.\(suffix)" : glyph-proc create-glyph "semicolon.\(suffix)" : glyph-proc
include [refer-glyph "comma.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "comma.\(suffix)"] AS_BASE ALSO_METRICS
include [refer-glyph "xhPeriod.\(suffix)"] include [refer-glyph "xhPeriod.\(suffix)"]
@ -161,6 +169,7 @@ glyph-block Symbol-Punctuation-Small : begin
select-variant 'colon' ':' (follow -- 'punctuationDot') select-variant 'colon' ':' (follow -- 'punctuationDot')
select-variant 'colon/mid' (follow -- 'punctuationDot') select-variant 'colon/mid' (follow -- 'punctuationDot')
select-variant 'modifierLetterColon' 0xA789 (follow -- 'punctuationDot') select-variant 'modifierLetterColon' 0xA789 (follow -- 'punctuationDot')
select-variant 'modifierLetterRaisedColon' 0x2F8 (follow -- 'punctuationDot')
select-variant 'semicolon' ';' (follow -- 'punctuationDot') select-variant 'semicolon' ';' (follow -- 'punctuationDot')
select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot') select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot')
alias 'greekquestion' 0x37E 'semicolon' alias 'greekquestion' 0x37E 'semicolon'

View file

@ -140,6 +140,7 @@ export : define decompositionOverrides : object
."\u02F0" "\uE00D\uE004" ."\u02F0" "\uE00D\uE004"
."\u02F1" "\uE00D\u0354" ."\u02F1" "\uE00D\u0354"
."\u02F2" "\uE00D\u0355" ."\u02F2" "\uE00D\u0355"
."\u02FF" "\uE00D\u20EE"
."\u1FED" "\uE00D\u0308\u0300" ."\u1FED" "\uE00D\u0308\u0300"
."\u1FEE" "\uE00D\u0308\u0301" ."\u1FEE" "\uE00D\u0308\u0301"

View file

@ -0,0 +1,7 @@
const ucdNames = require("@unicode/unicode-14.0.0/Names");
for (let i = 2; i < process.argv.length; i++) {
const lch = parseInt(process.argv[i], 16);
const name = ucdNames.get(lch);
console.log(" -", name, `(\`U+${lch.toString(16).toUpperCase().padStart(4, "0")}\`);`);
}

View file

@ -649,6 +649,7 @@ const PagesFontExport = task.group(`pages:font-export`, async (target, gr) => {
const outDir = Path.resolve(pagesDir, "shared/fonts", gr); const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
await target.need(GroupWebFonts(gr), de(outDir)); await target.need(GroupWebFonts(gr), de(outDir));
await cp(`${DIST}/${gr}/woff2`, Path.resolve(outDir, "woff2")); await cp(`${DIST}/${gr}/woff2`, Path.resolve(outDir, "woff2"));
await Delay(500);
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsPages); await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsPages);
await rm(Path.resolve(outDir, "ttf")); await rm(Path.resolve(outDir, "ttf"));
}); });
@ -660,6 +661,7 @@ const PagesFastFontExport = task.group(`pages:fast-font-export`, async (target,
const outDir = Path.resolve(pagesDir, "shared/fonts", gr); const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
await target.need(GroupTTFs(gr), de(outDir)); await target.need(GroupTTFs(gr), de(outDir));
await cp(`${DIST}/${gr}/ttf`, Path.resolve(outDir, "ttf")); await cp(`${DIST}/${gr}/ttf`, Path.resolve(outDir, "ttf"));
await Delay(500);
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsFast); await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsFast);
await rm(Path.resolve(outDir, "woff2")); await rm(Path.resolve(outDir, "woff2"));
}); });