Adds cascading contextual alternates for case-sensitive delimiters

This commit is contained in:
Rasmus Andersson 2017-08-30 09:27:54 -07:00
parent 6091d15779
commit cf49a3ba7e
2 changed files with 18 additions and 4 deletions

View file

@ -141,6 +141,13 @@ x<-4 x < -4 x<-y
1.2 34.56.78.90.12 1.2 34.56.78.90.12
A*Y V*V W*W N*N X*X A*Y V*V W*W N*N X*X
Λ*Λ Σ*Σ Δ*Δ Y*Y &* Λ*Λ Σ*Σ Δ*Δ Y*Y &*
calt case should cascade:
U() U[] U{} — rightx should be rightx.case
()U []U {}U — special-cased as "delim' delim -> delim.case"
U--- — all hyphens should be hyphen.case
---U — only the hyphen next to U should be hyphen.case
U-→(){}[]*
`) `)
// From http://justanotherfoundry.com/generator // From http://justanotherfoundry.com/generator
@ -157,6 +164,8 @@ samples.set('Latin extended', `
ĀĂĄǍǞǠǢǺǼȀȂȦȺ ƁƂɃ ĆĈĊČƇȻ ĎĐƉƊDŽDždžDZDzdz ĒĔĖĘĚȄȆȨɆ ĜĞĠĢƓǤǦǴ ĤĦǶȞ ĨĪĬĮİǏȈȊƗƖ IJ ĴɈ ĶƘǨ ĹĻĽĿŁȽ LJLjNJNjljnj ŃŅŇŊƝǸ ŌŎŐŒƠǑǪǬǾȌȎȪȬȮȰ Ƥ ŔŖŘȐȒɌ ŚŜŞŠȘ ŢŤŦƬƮȚȾ ŨŪŬŮŰŲǓǕǗǙǛƯȔȖɄ Ŵ ŶŸƳȲɎ ŹŻŽƵȤ ĀĂĄǍǞǠǢǺǼȀȂȦȺ ƁƂɃ ĆĈĊČƇȻ ĎĐƉƊDŽDždžDZDzdz ĒĔĖĘĚȄȆȨɆ ĜĞĠĢƓǤǦǴ ĤĦǶȞ ĨĪĬĮİǏȈȊƗƖ IJ ĴɈ ĶƘǨ ĹĻĽĿŁȽ LJLjNJNjljnj ŃŅŇŊƝǸ ŌŎŐŒƠǑǪǬǾȌȎȪȬȮȰ Ƥ ŔŖŘȐȒɌ ŚŜŞŠȘ ŢŤŦƬƮȚȾ ŨŪŬŮŰŲǓǕǗǙǛƯȔȖɄ Ŵ ŶŸƳȲɎ ŹŻŽƵȤ
āăąǎȧǟǡǣǻǽȁȃ ƀƂƄƅ ćĉċčƈȼ ďđƋƌȡ ȸȹ ēĕėęěȅȇȩɇ ƒ ĝğġģǥǧǵ ĥħƕȟ ĩīĭįıijǐȉȋ ĵǰȷɉ ķĸƙǩ ĺļľŀƚł ńņňʼnŋƞǹȵ ōŏőœơǒǫǭǿȍȏȫȭȯȱ ƥ ŕŗřȑȓɍ śŝşšƨșȿ ţťŧƫƭțȶ ũūŭůűųưǔǖǘǚǜȕȗ ŵ ŷȳɏ źżžƶȥɀ āăąǎȧǟǡǣǻǽȁȃ ƀƂƄƅ ćĉċčƈȼ ďđƋƌȡ ȸȹ ēĕėęěȅȇȩɇ ƒ ĝğġģǥǧǵ ĥħƕȟ ĩīĭįıijǐȉȋ ĵǰȷɉ ķĸƙǩ ĺļľŀƚł ńņňʼnŋƞǹȵ ōŏőœơǒǫǭǿȍȏȫȭȯȱ ƥ ŕŗřȑȓɍ śŝşšƨșȿ ţťŧƫƭțȶ ũūŭůűųưǔǖǘǚǜȕȗ ŵ ŷȳɏ źżžƶȥɀ
`) `)
samples.set('Combi base glyphs (top 200)', ` samples.set('Combi base glyphs (top 200)', `

View file

@ -884,11 +884,13 @@ feature numr {
colon colon
]; ];
@CASE_L = [ @CASE_DELIM_L @CASE_NONDELIM_L ]; @CASE_L = [ @CASE_DELIM_L @CASE_NONDELIM_L ];
@CASE_R = [
@CASE_DELIM_R = [
braceleft.case braceright.case braceleft.case braceright.case
bracketleft.case bracketright.case bracketleft.case bracketright.case
parenleft.case parenright.case parenleft.case parenright.case
];
@CASE_NONDELIM_R = [
asterisk.case asterisk.case
at.case at.case
multiply.case multiply.case
@ -910,6 +912,7 @@ feature numr {
notequal.case notequal.case
colon.case colon.case
]; ];
@CASE_R = [ @CASE_DELIM_R @CASE_NONDELIM_R ];
feature case { feature case {
sub @CASE_L by @CASE_R; sub @CASE_L by @CASE_R;
@ -919,9 +922,11 @@ feature calt {
@UC = [ @UC_ROMAN @UC_SET1 exclam question ]; @UC = [ @UC_ROMAN @UC_SET1 exclam question ];
@LC = [ @LC_ROMAN @LC_SET1 ]; @LC = [ @LC_ROMAN @LC_SET1 ];
sub @UC @CASE_L' by @CASE_R; sub [ @UC @CASE_R ] @CASE_L' by @CASE_R;
ignore sub @LC @CASE_NONDELIM_L' @UC; ignore sub @LC @CASE_NONDELIM_L' @UC;
sub @CASE_L' @UC by @CASE_R; sub @CASE_L' [ @CASE_R @UC ] by @CASE_R;
sub @CASE_DELIM_L' @CASE_DELIM_L [ @CASE_R @UC ] by @CASE_DELIM_R;
# ->, <- # ->, <-
@ARROW_DASH = [ hyphen endash emdash ]; @ARROW_DASH = [ hyphen endash emdash ];