diff --git a/images/languages.dark.svg b/images/languages.dark.svg index 0c0e25073..507cc068a 100644 --- a/images/languages.dark.svg +++ b/images/languages.dark.svg @@ -1,5 +1,5 @@ - + @@ -342,7 +342,7 @@ - + @@ -414,7 +414,7 @@ - + @@ -499,14 +499,11 @@ - - - - - - - - + + + + + @@ -525,7 +522,7 @@ - + @@ -601,7 +598,7 @@ - + @@ -675,7 +672,7 @@ - + @@ -760,7 +757,7 @@ - + @@ -827,7 +824,7 @@ - + @@ -924,7 +921,7 @@ - + @@ -989,7 +986,7 @@ - + @@ -1078,7 +1075,7 @@ - + @@ -1169,7 +1166,7 @@ - + @@ -1225,7 +1222,7 @@ - + @@ -1284,7 +1281,7 @@ - + @@ -1363,7 +1360,7 @@ - + @@ -1439,7 +1436,7 @@ - + @@ -1506,7 +1503,7 @@ - + @@ -1573,7 +1570,7 @@ - + @@ -1647,7 +1644,7 @@ - + @@ -1729,7 +1726,7 @@ - + @@ -1810,7 +1807,7 @@ - + @@ -1865,7 +1862,7 @@ - + @@ -1935,7 +1932,7 @@ - + @@ -1993,7 +1990,7 @@ - + @@ -2063,7 +2060,7 @@ - + @@ -2140,7 +2137,7 @@ - + @@ -2212,7 +2209,7 @@ - + @@ -2287,7 +2284,7 @@ - + @@ -2359,7 +2356,7 @@ - + @@ -2410,7 +2407,7 @@ - + @@ -2502,7 +2499,7 @@ - + @@ -2571,7 +2568,7 @@ - + @@ -2662,7 +2659,7 @@ - + @@ -2727,7 +2724,7 @@ - + @@ -2818,7 +2815,7 @@ - + @@ -2871,7 +2868,7 @@ - + @@ -2968,7 +2965,7 @@ - + @@ -3026,7 +3023,7 @@ - + @@ -3082,7 +3079,7 @@ - + @@ -3145,7 +3142,7 @@ - + @@ -3203,7 +3200,7 @@ - + @@ -3262,7 +3259,7 @@ - + diff --git a/images/languages.light.svg b/images/languages.light.svg index e2dbde8ac..79d96363c 100644 --- a/images/languages.light.svg +++ b/images/languages.light.svg @@ -1,5 +1,5 @@ - + @@ -342,7 +342,7 @@ - + @@ -414,7 +414,7 @@ - + @@ -499,14 +499,11 @@ - - - - - - - - + + + + + @@ -525,7 +522,7 @@ - + @@ -601,7 +598,7 @@ - + @@ -675,7 +672,7 @@ - + @@ -760,7 +757,7 @@ - + @@ -827,7 +824,7 @@ - + @@ -924,7 +921,7 @@ - + @@ -989,7 +986,7 @@ - + @@ -1078,7 +1075,7 @@ - + @@ -1169,7 +1166,7 @@ - + @@ -1225,7 +1222,7 @@ - + @@ -1284,7 +1281,7 @@ - + @@ -1363,7 +1360,7 @@ - + @@ -1439,7 +1436,7 @@ - + @@ -1506,7 +1503,7 @@ - + @@ -1573,7 +1570,7 @@ - + @@ -1647,7 +1644,7 @@ - + @@ -1729,7 +1726,7 @@ - + @@ -1810,7 +1807,7 @@ - + @@ -1865,7 +1862,7 @@ - + @@ -1935,7 +1932,7 @@ - + @@ -1993,7 +1990,7 @@ - + @@ -2063,7 +2060,7 @@ - + @@ -2140,7 +2137,7 @@ - + @@ -2212,7 +2209,7 @@ - + @@ -2287,7 +2284,7 @@ - + @@ -2359,7 +2356,7 @@ - + @@ -2410,7 +2407,7 @@ - + @@ -2502,7 +2499,7 @@ - + @@ -2571,7 +2568,7 @@ - + @@ -2662,7 +2659,7 @@ - + @@ -2727,7 +2724,7 @@ - + @@ -2818,7 +2815,7 @@ - + @@ -2871,7 +2868,7 @@ - + @@ -2968,7 +2965,7 @@ - + @@ -3026,7 +3023,7 @@ - + @@ -3082,7 +3079,7 @@ - + @@ -3145,7 +3142,7 @@ - + @@ -3203,7 +3200,7 @@ - + @@ -3262,7 +3259,7 @@ - + diff --git a/packages/font-glyphs/src/common/derivatives.ptl b/packages/font-glyphs/src/common/derivatives.ptl index 45857645c..02468f6da 100644 --- a/packages/font-glyphs/src/common/derivatives.ptl +++ b/packages/font-glyphs/src/common/derivatives.ptl @@ -8,24 +8,24 @@ extern Map glyph-module glyph-block Common-Derivatives : begin - define [ApplyCv g shapeFrom follow para] : begin - foreach { kPrime prime } para.variants.primes : foreach pv [prime.variants.values] : begin - local suffix : pv.resolveFor para follow - if suffix : begin - local dstName : shapeFrom + '.' + suffix - local dstGlyph : query-glyph dstName - if dstGlyph : g.dependsOn dstGlyph + define [ApplyCv g shapeFrom primaryFollow allFollows para] : begin + foreach follow [items-of allFollows] : foreach { kPrime prime } para.variants.primes + foreach pv [prime.variants.values] : begin + local suffix : pv.resolveFor para follow + if suffix : begin + local dstName : shapeFrom + '.' + suffix + local dstGlyph : query-glyph dstName + if dstGlyph : g.dependsOn dstGlyph - if (para.enableCvSs && pv.tag && pv.rank) : begin - pv.set g dstName - if pv.nonDeriving : pv.setPreventDeriving g + if (follow === primaryFollow && para.enableCvSs && pv.tag && pv.rank) : begin + pv.set g dstName + if pv.nonDeriving : pv.setPreventDeriving g glyph-block-export select-variant - define [select-variant] : with-params [name unicode [shapeFrom name] [follow name] [reduction null]] : begin + define [select-variant] : with-params [name unicode [shapeFrom name] [follow name]] : begin if [not : glyph-is-needed name] : return nothing - local variant para.variantSelector.(follow) - if reduction : set variant : reduction.(variant) || variant + local variant para.variantSelector.([resolveMainFollow follow]) if [not variant] : begin throw : new Error "Variant for \(name) (selector: \(shapeFrom)) is not assigned." @@ -38,12 +38,29 @@ glyph-block Common-Derivatives : begin currentGlyph.dependsOn fromGlyph currentGlyph.cloneRankFromGlyph fromGlyph - ApplyCv currentGlyph shapeFrom follow para + ApplyCv currentGlyph shapeFrom [resolveMainFollow follow] [resolveAllFollow follow] para foreach gr [items-of SvInheritableRelations] : begin local v : gr.get fromGlyph if v : gr.set currentGlyph v + define [resolveMainFollow follow] : begin + if ([typeof follow] === 'string') : return follow + return : follow.resolveMain + define [resolveAllFollow follow] : begin + if ([typeof follow] === 'string') : return { follow } + return : follow.resolveAll + + glyph-block-export conditional-follow + define [conditional-follow c f1 f2] : new CConditionalFollow c f1 f2 + class CConditionalFollow + public [new c f1 f2] : begin + set this.c c + set this.f1 f1 + set this.f2 f2 + public [resolveMain] : return : if this.c this.f1 this.f2 + public [resolveAll] : return { this.f1 this.f2 } + glyph-block-export orthographic-italic define [orthographic-italic name unicode] : if para.isItalic alias name unicode (name + '.italic') diff --git a/packages/font-glyphs/src/letter/latin-ext/lower-ae-oe.ptl b/packages/font-glyphs/src/letter/latin-ext/lower-ae-oe.ptl index 9dfb512ef..e54c3e1e1 100644 --- a/packages/font-glyphs/src/letter/latin-ext/lower-ae-oe.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/lower-ae-oe.ptl @@ -402,7 +402,7 @@ glyph-block Letter-Latin-Lower-AE-OE : begin select-variant "ae/e" (follow -- 'e') select-variant "aeInvE/right" (follow -- 'e') select-variant "ue/u" - select-variant "au/u" (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'au/u/full' 'au/u/reduced']) + select-variant "au/u" (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'au/u/full' 'au/u/reduced']) select-variant "oeOpenO/left" (follow -- 'c') select-variant "cyrl/ae/a" (shapeFrom -- 'ae/a') select-variant "cyrl/yae/left" diff --git a/packages/font-glyphs/src/letter/latin-ext/upper-aa-ao.ptl b/packages/font-glyphs/src/letter/latin-ext/upper-aa-ao.ptl index e98fc77bc..7bcf8ef82 100644 --- a/packages/font-glyphs/src/letter/latin-ext/upper-aa-ao.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/upper-aa-ao.ptl @@ -117,7 +117,7 @@ glyph-block Letter-Latin-Upper-AA-AO : begin include : with-transform [ApparentTranslate shift 0] union [Base subDf CAP df.mvs] [Slabs subDf CAP] - select-variant "AU/Right" (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'AU/U/full' 'AU/U/reduced']) + select-variant "AU/Right" (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'AU/U/full' 'AU/U/reduced']) do "AU" select-variant 'AA/AU/Left' (follow -- 'A') diff --git a/packages/font-glyphs/src/letter/latin/lower-m.ptl b/packages/font-glyphs/src/letter/latin/lower-m.ptl index 4d22e7df5..4f2634b32 100644 --- a/packages/font-glyphs/src/letter/latin/lower-m.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-m.ptl @@ -401,22 +401,22 @@ glyph-block Letter-Latin-Lower-M : begin eject-contour 'serifLT' include : CyrDescender.rSideJut df.rightSB 0 (refSw -- df.mvs) - select-variant 'turnm' 0x26F (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'turnm/full' 'turnm/reduced']) + select-variant 'turnm' 0x26F (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'turnm/full' 'turnm/reduced']) select-variant 'turnm/reduced' (shapeFrom -- 'turnm') - select-variant 'capitalTurnm' 0x19C (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'turnm/full' 'turnm/reduced']) + select-variant 'capitalTurnm' 0x19C (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'turnm/full' 'turnm/reduced']) - select-variant 'turnmLeg' 0x270 (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'turnmLeg/full' 'turnmLeg/reduced']) + select-variant 'turnmLeg' 0x270 (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'turnmLeg/full' 'turnmLeg/reduced']) select-variant 'turnmLeg/reduced' (shapeFrom -- 'turnmLeg') - select-variant 'turnmSideways' 0x1D1F (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'turnm/full' 'turnm/reduced']) + select-variant 'turnmSideways' 0x1D1F (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'turnm/full' 'turnm/reduced']) - select-variant 'cyrl/sha.italic' (shapeFrom -- 'turnm') (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'cyrl/sha.italic/full' 'cyrl/sha.italic/reduced']) + select-variant 'cyrl/sha.italic' (shapeFrom -- 'turnm') (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'cyrl/sha.italic/full' 'cyrl/sha.italic/reduced']) alias 'cyrl/sha.BGR' null 'cyrl/sha.italic' select-variant 'cyrl/sha/reduced.italic' (shapeFrom -- 'turnm') (follow -- 'cyrl/sha.italic/reduced') alias 'cyrl/sha/reduced.BGR' null 'cyrl/sha/reduced.italic' - select-variant 'cyrl/shcha.italic' (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'cyrl/shcha.italic/full' 'cyrl/shcha.italic/reduced']) + select-variant 'cyrl/shcha.italic' (follow -- [conditional-follow [MEnoughSpaceForFullSerifs : dfM] 'cyrl/shcha.italic/full' 'cyrl/shcha.italic/reduced']) alias 'cyrl/shcha.BGR' null 'cyrl/shcha.italic' select-variant 'cyrl/shcha/reduced.italic' (shapeFrom -- 'cyrl/shcha.italic') (follow -- 'cyrl/shcha.italic/reduced') alias 'cyrl/shcha/reduced.BGR' null 'cyrl/shcha/reduced.italic' diff --git a/packages/font-glyphs/src/meta/aesthetics.ptl b/packages/font-glyphs/src/meta/aesthetics.ptl index 4b248af3f..a6ad7b1d6 100644 --- a/packages/font-glyphs/src/meta/aesthetics.ptl +++ b/packages/font-glyphs/src/meta/aesthetics.ptl @@ -192,17 +192,16 @@ export : define [calculateMetrics para] : begin ParenTop ParenBot OperTop OperBot TackTop TackBot PlusTop PlusBot PictTop PictBot BgOpTop BgOpBot Italify Upright Scale Translate ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook AHook SHook RHook JHook - HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize - PeriodSize HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth - AccentClearance AccentHeight CThin CThinB SLAB IBalance IBalance2 - JBalance JBalance2 TBalance TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 - WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper EssLower EssQuestion HalfStroke - RightSB Middle DotRadius PeriodRadius SideJut ArchDepthA ArchDepthB SmallArchDepthA - SmallArchDepthB CorrectionOMidX CorrectionOMidS compositeBaseAnchors - AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke ShoulderFine - _SuperXY AdviceGlottalStopArchDepth StrokeWidthBlend - ArchDepthAOf ArchDepthBOf SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL - HSwToV NarrowUnicodeT WideUnicodeT VERY-FAR TINY] + HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos + LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight + CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance + RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 + EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut + ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS + compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke + ShoulderFine _SuperXY AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf + SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT + WideUnicodeT VERY-FAR TINY] export : define [setFontMetrics para metrics fm] : begin define [object CAP Descender XH Width SymbolMid] metrics diff --git a/packages/font-glyphs/src/meta/macros.ptl b/packages/font-glyphs/src/meta/macros.ptl index 848eee208..e8a569404 100644 --- a/packages/font-glyphs/src/meta/macros.ptl +++ b/packages/font-glyphs/src/meta/macros.ptl @@ -185,9 +185,9 @@ define-macro run-glyph-module : syntax-rules define-macro glyph-block-import : syntax-rules `[glyph-block-import @_blockName] : begin define allExports : object - Common-Derivatives `[select-variant orthographic-italic orthographic-slanted - refer-glyph query-glyph alias turned HDual HCombine VDual VCombine derive-glyphs - derive-composites link-reduced-variant alias-reduced-variant HalfAdvance + Common-Derivatives `[select-variant conditional-follow orthographic-italic + orthographic-slanted refer-glyph query-glyph alias turned HDual HCombine VDual VCombine + derive-glyphs derive-composites link-reduced-variant alias-reduced-variant HalfAdvance derive-multi-part-glyphs DeriveMeshT link-gr] CommonShapes `[no-shape tagged Rect SquareAt Ring RingAt DotAt RingStroke diff --git a/tools/generate-samples/src/templates/languages.mjs b/tools/generate-samples/src/templates/languages.mjs index a6e88fb5a..eeb418c0a 100644 --- a/tools/generate-samples/src/templates/languages.mjs +++ b/tools/generate-samples/src/templates/languages.mjs @@ -2,56 +2,56 @@ import * as themes from "../themes/index.mjs"; // prettier-ignore const languages = [ - { lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.' }, - { lang: 'IPA', sample: '[liə̯bə̆ ɡʷɯ̹ʔ̚ daŋ˕ sŋə̆r̥ra] [ʔɹie˦ na˦ ɡɨ˨ tɕie˦] [ʔɣɛw˦˨ tɕi˦˨ ʔɨwk˦ ʔɨwk˦] [jaw⁴ tsɨ³ tʂɨ¹ ʋu² tʂi¹]', localeId :'und-fonipa' }, - { lang: 'Azerbaijani', sample: 'Zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq.', localeId :'az' }, - { lang: 'Belarusian', sample: 'У Іўі худы жвавы чорт у зялёнай камізэльцы пабег пад’есці фаршу з юшкай.' }, - { lang: 'Breton', sample: 'Yec’hed mat Jakez ! Skarzhit ar gwerennoù-mañ, kavet e vo gwin betek fin ho puhez.' }, - { lang: 'Bulgarian', sample: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.', localeId :'bg' }, - { lang: 'Catalan', sample: '«Dóna amor que seràs feliç!». Això, iŀlús company geniüt, ja és un lluït rètol blavís d’onze kWh.' }, - { lang: 'Croatian', sample: 'Gojazni đačić s biciklom drži hmelj i finu vatu u džepu nošnje.' }, - { lang: 'Czech', sample: 'Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu.' }, - { lang: 'Danish', sample: 'Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon.' }, - { lang: 'Dutch', sample: 'Pa’s wijze lynx bezag vroom het fikse aquaduct.' }, - { lang: 'Esperanto', sample: 'Eble ĉiu kvazaŭ-deca fuŝĥoraĵo ĝojigos homtipon.' }, - { lang: 'Estonian', sample: 'Põdur Zagrebi tšellomängija-följetonist Ciqo külmetas kehvas garaažis.' }, - { lang: 'Finnish', sample: 'Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.' }, - { lang: 'French', sample: 'Voix ambiguë d’un cœur qui au zéphyr préfère les jattes de kiwi.' }, - { lang: 'German', sample: 'Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.' }, - { lang: 'Greek', sample: 'Ταχίστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός.' }, + { lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.' }, + { lang: 'IPA', sample: '[liə̯bə̆ ɡʷɯ̹ʔ̚ daŋ˕ sŋə̆r̥ra] [ʔɹie˦ na˦ ɡɨ˨ tɕie˦] [ʔɣɛw˦˨ tɕi˦˨ ʔɨwk˦ ʔɨwk˦] [jaw⁴ tsɨ³ tʂɨ¹ ʋu² tʂi¹]', localeId :'und-fonipa' }, + { lang: 'Azerbaijani', sample: 'Zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq.', localeId :'az' }, + { lang: 'Belarusian', sample: 'У Іўі худы жвавы чорт у зялёнай камізэльцы пабег пад’есці фаршу з юшкай.' }, + { lang: 'Breton', sample: 'Yec’hed mat Jakez ! Skarzhit ar gwerennoù-mañ, kavet e vo gwin betek fin ho puhez.' }, + { lang: 'Bulgarian', sample: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.', localeId :'bg' }, + { lang: 'Catalan', sample: '«Dóna amor que seràs feliç!». Això, iŀlús company geniüt, ja és un lluït rètol blavís d’onze kWh.' }, + { lang: 'Croatian', sample: 'Gojazni đačić s biciklom drži hmelj i finu vatu u džepu nošnje.' }, + { lang: 'Czech', sample: 'Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu.' }, + { lang: 'Danish', sample: 'Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon.' }, + { lang: 'Dutch', sample: 'Pa’s wijze lynx bezag vroom het fikse aquaduct.' }, + { lang: 'Esperanto', sample: 'Eble ĉiu kvazaŭ-deca fuŝĥoraĵo ĝojigos homtipon.' }, + { lang: 'Estonian', sample: 'Põdur Zagrebi tšellomängija-följetonist Ciqo külmetas kehvas garaažis.' }, + { lang: 'Finnish', sample: 'Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.' }, + { lang: 'French', sample: 'Voix ambiguë d’un cœur qui au zéphyr préfère les jattes de kiwi.' }, + { lang: 'German', sample: 'Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.' }, + { lang: 'Greek', sample: 'Ταχίστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός.' }, { lang: 'Ancient Greek', sample: 'Ἄδμηθ’, ὁρᾷς γὰρ τἀμὰ πράγμαθ’ ὡς ἔχει, λέξαι θέλω σοι πρὶν θανεῖν ἃ βούλομαι.' }, - { lang: 'Hungarian', sample: 'Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.' }, - { lang: 'Icelandic', sample: 'Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa.' }, - { lang: 'Irish', sample: 'Ċuaiġ bé ṁórṡáċ le dlúṫspád fíorḟinn trí hata mo ḋea-ṗorcáin ḃig.' }, - { lang: 'Kurdish', sample: 'Cem vî Feqoyê pîs zêdetir ji çar gulên xweşik hebûn.' }, - { lang: 'Latvian', sample: 'Muļķa hipiji mēģina brīvi nogaršot celofāna žņaudzējčūsku.' }, - { lang: 'Lithuanian', sample: 'Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą.' }, - { lang: 'Macedonian', sample: 'Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех.', localeId :'mk' }, - { lang: 'Maltese', sample: 'Kien liebes gozz ħwejjeġ u ċraret vera qodma u m’għażluhx fil-pront.' }, - { lang: 'Norwegian', sample: 'Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz.' }, - { lang: 'Polish', sample: 'Pchnąć w tę łódź jeża lub ośm skrzyń fig.' }, - { lang: 'Portuguese', sample: 'Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.' }, - { lang: 'Romanian', sample: 'Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila.' }, - { lang: 'Russian', sample: 'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.' }, - { lang: 'Serbian', sample: 'Ајшо, лепото и чежњо, за љубав срца мога дођи у Хаџиће на кафу.', localeId: 'sr' }, - { lang: 'Slovak', sample: 'Kŕdeľ šťastných ďatľov učí pri ústí Váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso.' }, - { lang: 'Slovenian', sample: 'V kožuščku hudobnega fanta stopiclja mizar.' }, - { lang: 'Spanish', sample: 'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.' }, - { lang: 'Swedish', sample: 'Yxmördaren Julia Blomqvist på fäktning i Schweiz.' }, - { lang: 'Turkish', sample: 'Pijamalı hasta yağız şoföre çabucak güvendi.', localeId :'tr' }, - { lang: 'Ukrainian', sample: 'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!' }, - { lang: 'Vietnamese', sample: 'Do bạch kim rất quý nên sẽ dùng để lắp vô xương.', localeId :'vi' }, - { lang: 'Volapük', sample: 'Ꞝrꞛtom jofazaris hodagudik ꞟf binoy ve cꞛl ad xilapel.' }, - { lang: 'Welsh', sample: 'Parciais fy jac codi baw hud llawn dŵr ger tŷ Mabon.' } + { lang: 'Hungarian', sample: 'Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.' }, + { lang: 'Icelandic', sample: 'Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa.' }, + { lang: 'Irish', sample: 'Ċuaiġ bé ṁórṡáċ le dlúṫspád fíorḟinn trí hata mo ḋea-ṗorcáin ḃig.' }, + { lang: 'Kurdish', sample: 'Cem vî Feqoyê pîs zêdetir ji çar gulên xweşik hebûn.' }, + { lang: 'Latvian', sample: 'Muļķa hipiji mēģina brīvi nogaršot celofāna žņaudzējčūsku.' }, + { lang: 'Lithuanian', sample: 'Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą.' }, + { lang: 'Macedonian', sample: 'Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех.', localeId :'mk' }, + { lang: 'Maltese', sample: 'Kien liebes gozz ħwejjeġ u ċraret vera qodma u m’għażluhx fil-pront.' }, + { lang: 'Norwegian', sample: 'Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz.' }, + { lang: 'Polish', sample: 'Pchnąć w tę łódź jeża lub ośm skrzyń fig.' }, + { lang: 'Portuguese', sample: 'Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.' }, + { lang: 'Romanian', sample: 'Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila.' }, + { lang: 'Russian', sample: 'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.' }, + { lang: 'Serbian', sample: 'Ајшо, лепото и чежњо, за љубав срца мога дођи у Хаџиће на кафу.', localeId: 'sr' }, + { lang: 'Slovak', sample: 'Kŕdeľ šťastných ďatľov učí pri ústí Váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso.' }, + { lang: 'Slovenian', sample: 'V kožuščku hudobnega fanta stopiclja mizar.' }, + { lang: 'Spanish', sample: 'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.' }, + { lang: 'Swedish', sample: 'Yxmördaren Julia Blomqvist på fäktning i Schweiz.' }, + { lang: 'Turkish', sample: 'Pijamalı hasta yağız şoföre çabucak güvendi.', localeId :'tr' }, + { lang: 'Ukrainian', sample: 'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!' }, + { lang: 'Vietnamese', sample: 'Do bạch kim rất quý nên sẽ dùng để lắp vô xương.', localeId :'vi' }, + { lang: 'Volapük', sample: 'Ꞝrꞛtom jofazaris hodagudik ꞟf binoy ve cꞛl ad xilapel.' }, + { lang: 'Welsh', sample: 'Parciais fy jac codi baw hud llawn dŵr ger tŷ Mabon.' } ]; export default (function (args) { const theme = themes[args.theme]; const EM = 24; const elementHeight = 1.5 * EM; - const canvasWidth = 60 * EM; + const canvasWidth = 62 * EM; const canvasHeight = (2 + languages.length) * elementHeight; - const xSplit = 10 * EM; + const xSplit = 11 * EM; let frames = []; for (const [j, { lang, sample, localeId }] of languages.entries()) { const top = canvasHeight / 2 + elementHeight * (j - languages.length / 2);