From cf49a3ba7e5403bae292ac7e0aab41716aaae9b7 Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Wed, 30 Aug 2017 09:27:54 -0700 Subject: Adds cascading contextual alternates for case-sensitive delimiters --- docs/lab/index.html | 9 +++++++++ src/features.fea | 13 +++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/lab/index.html b/docs/lab/index.html index 63c4949ea..0179faa22 100644 --- a/docs/lab/index.html +++ b/docs/lab/index.html @@ -141,6 +141,13 @@ x<-4 x < -4 x<-y 1.2 34.56.78.90.12 A*Y V*V W*W N*N X*X Λ*Λ Σ*Σ Δ*Δ 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 @@ -157,6 +164,8 @@ samples.set('Latin extended', ` ĀĂĄǍǞǠǢǺǼȀȂȦȺ ƁƂɃ ĆĈĊČƇȻ ĎĐƉƊDŽDždžDZDzdz ĒĔĖĘĚȄȆȨɆ ĜĞĠĢƓǤǦǴ ĤĦǶȞ ĨĪĬĮİǏȈȊƗƖ IJ ĴɈ ĶƘǨ ĹĻĽĿŁȽ LJLjNJNjljnj ŃŅŇŊƝǸ ŌŎŐŒƠǑǪǬǾȌȎȪȬȮȰ Ƥ ŔŖŘȐȒɌ ŚŜŞŠȘ ŢŤŦƬƮȚȾ ŨŪŬŮŰŲǓǕǗǙǛƯȔȖɄ Ŵ ŶŸƳȲɎ ŹŻŽƵȤ āăąǎȧǟǡǣǻǽȁȃ ƀƂƄƅ ćĉċčƈȼ ďđƋƌȡ ȸȹ ēĕėęěȅȇȩɇ ƒ ĝğġģǥǧǵ ĥħƕȟ ĩīĭįıijǐȉȋ ĵǰȷɉ ķĸƙǩ ĺļľŀƚł ńņňʼnŋƞǹȵ ōŏőœơǒǫǭǿȍȏȫȭȯȱ ƥ ŕŗřȑȓɍ śŝşšƨșȿ ţťŧƫƭțȶ ũūŭůűųưǔǖǘǚǜȕȗ ŵ ŷȳɏ źżžƶȥɀ + + `) samples.set('Combi base glyphs (top 200)', ` diff --git a/src/features.fea b/src/features.fea index 8b5e9860d..e62b0dd91 100644 --- a/src/features.fea +++ b/src/features.fea @@ -884,11 +884,13 @@ feature numr { colon ]; @CASE_L = [ @CASE_DELIM_L @CASE_NONDELIM_L ]; -@CASE_R = [ + +@CASE_DELIM_R = [ braceleft.case braceright.case bracketleft.case bracketright.case parenleft.case parenright.case - +]; +@CASE_NONDELIM_R = [ asterisk.case at.case multiply.case @@ -910,6 +912,7 @@ feature numr { notequal.case colon.case ]; +@CASE_R = [ @CASE_DELIM_R @CASE_NONDELIM_R ]; feature case { sub @CASE_L by @CASE_R; @@ -919,9 +922,11 @@ feature calt { @UC = [ @UC_ROMAN @UC_SET1 exclam question ]; @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; - 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 ]; -- cgit v1.2.3