diff options
author | Egmont Koblinger <egmont@gmail.com> | 2019-06-07 22:22:22 +0200 |
---|---|---|
committer | Egmont Koblinger <egmont@gmail.com> | 2019-06-30 15:06:15 +0200 |
commit | e58b6f03e705b96b69b4f860fce3a869383409ae (patch) | |
tree | 43a2e1d17016c0c96b01dd637638926987e6446c | |
parent | dd5d6d6938ca11821005b9436a484aa141fdf090 (diff) | |
download | vte-e58b6f03e705b96b69b4f860fce3a869383409ae.tar.gz |
perf,bidi: Add BiDi demo and info files
-rw-r--r-- | perf/bidi-demo.txt | 287 | ||||
-rw-r--r-- | perf/bidi.sh | 39 |
2 files changed, 326 insertions, 0 deletions
diff --git a/perf/bidi-demo.txt b/perf/bidi-demo.txt new file mode 100644 index 00000000..de7c099c --- /dev/null +++ b/perf/bidi-demo.txt @@ -0,0 +1,287 @@ + ╔════════════════════════════╗ +═════════════════════════╣ BiDi test – for 80 columns ╠═════════════════════════ + ╚════════════════════════════╝ + +Test cases are structured like this: + +[01mTitle (bold)[m +Optional LTR explanation of the logical order (normal) +[32mReference rendering using similarly looking LTR glyphs (green)[m +[36mActual rendering, needs to match the reference rendering (cyan)[m + +All words, except for the explanation of the logical order wherever it’s +deliberately reversed, should show up in human readable order. + +Some test cases are marked as “should look broken”. This means that the +overall look is not what humans are looking for; still, the actual rendering +needs to match the reference rendering. + +At Arabic shaping tests, runs of connected letters are denoted. + +At box tests the reference rendering is upside down, so you should get nice +squares everywhere. + + ┌──────────────────┐ +──────────────────────────────┤ 1 – Implicit LTR ├────────────────────────────── + └──────────────────┘ +[01mLTR + RTL[m +[00mHello1 ⸤Hello23⸣ Hello456 Shlm1 ⸤Shlm23⸣ Shlm456[m +[32mHello1 ⸤Hello23⸣ Hello456 456oi7w ⸢23oi7w⸥ 1oi7w[m +[36mHello1 ⸤Hello23⸣ Hello456 שָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456[m + +[01mRTL + LTR[m +[00mShlm1 ⸤Shlm23⸣ Shlm456 Hello1 ⸤Hello23⸣ Hello456[m +[32m456oi7w ⸢23oi7w⸥ 1oi7w Hello1 ⸤Hello23⸣ Hello456[m +[36mשָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456 Hello1 ⸤Hello23⸣ Hello456[m + +[01mParagraph wrapping at foreign word[m +[32mLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor w[m +[32moi7 incididunt ut labore et dolore magna aliqua.[m +[36mLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor שָׁלוֹם incididunt ut labore et dolore magna aliqua.[m + +[01mDouble wide[m +[32ma<z n>x[m +[36ma<z א<ת[m + +[01mArabic shaping[m +[32m──╶╶╶─╶ ─── ─────╶ ─ ───╶──╶[m +[36mالطرفية – استعمل سطر الأوامر[m + +[01mCombining accents[m +[00mShlm Hungarian accents demo[m +[32moi7w Árvíztűrő tükörfúrógép[m +[36mשָׁלוֹם Árvíztűrő tükörfúrógép[m + +[01mBox[m +[32m┏━┓ a╔═╗z n┌─┐x ╭─╮[m +[36m┗━┛ a╚═╝z א┘─└ת ╰─╯[m + +[01mBox in mirrored mode[m +[32m┏━┓ a╔═╗z n┌─┐x ╭─╮[m[?2500h +[36m┗━┛ a╚═╝z א└─┘ת ╰─╯[m[?2500l + + ┌──────────────────┐ +──────────────────────────────┤ 2 – Implicit RTL ├────────────────────────────── + └──────────────────┘ +[01mLTR + RTL[m +[00mHello1 ⸤Hello23⸣ Hello456 Shlm1 ⸤Shlm23⸣ Shlm456[m + [32m456oi7w ⸢23oi7w⸥ 1oi7w Hello1 ⸤Hello23⸣ Hello456[m +[36m[2 kHello1 ⸤Hello23⸣ Hello456 שָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456[1 k[m + +[01mRTL + LTR[m +[00mShlm1 ⸤Shlm23⸣ Shlm456 Hello1 ⸤Hello23⸣ Hello456[m + [32mHello1 ⸤Hello23⸣ Hello456 456oi7w ⸢23oi7w⸥ 1oi7w[m +[36m[2 kשָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456 Hello1 ⸤Hello23⸣ Hello456[1 k[m + +[01mParagraph with wrong direction (should look broken)[m +[32mw Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor[m + [32m.incididunt ut labore et dolore magna aliqua oi7[m +[36m[2 kLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor שָׁלוֹם incididunt ut labore et dolore magna aliqua.[1 k[m + +[01mDouble wide[m + [32ma<z n>x[m +[36m[2 kא<ת a<z[1 k[m + +[01mArabic shaping[m + [32m──╶╶╶─╶ ─── ─────╶ ─ ───╶──╶[m +[36m[2 kالطرفية – استعمل سطر الأوامر[1 k[m + +[01mOld Hungarian Rovásírás[m +[00m(font at https://github.com/OldHungarian/old-hungarian-font)[m + [32mΛᛩHTΛᛩMↄH ↄ4TH4Λↄ¤ᛝ +ΛↃ[m +[36m[2 k𐲛𐳖𐳇 𐲏𐳪𐳙𐳍𐳀𐳢𐳐𐳀𐳙 𐲢𐳛𐳮𐳁𐳤𐳑𐳢𐳁𐳤[1 k[m + +[01mCombining accents[m +[00mShlm Hungarian accents demo[m +[32m Árvíztűrő tükörfúrógép oi7w[m +[36m[2 kשָׁלוֹם Árvíztűrő tükörfúrógép[1 k[m + +[01mBox[m + [32m╭─╮ a┌─┐z n╔═╗x ┏━┓[m[2 k +[36m┛━┗ א╝═╚ת a└─┘z ╯─╰[m[1 k + +[01mBox in mirrored mode[m + [32m╭─╮ a┌─┐z n╔═╗x ┏━┓[m[2 k[?2500h +[36m┗━┛ א╚═╝ת a└─┘z ╰─╯[m[?2500l[1 k + + ┌──────────────────────────────────┐ +──────────────────────┤ 3 – Implicit auto (LTR fallback) ├────────────────────── + └──────────────────────────────────┘ +[01mLTR + RTL[m +[00mHello1 ⸤Hello23⸣ Hello456 Shlm1 ⸤Shlm23⸣ Shlm456[m +[32mHello1 ⸤Hello23⸣ Hello456 456oi7w ⸢23oi7w⸥ 1oi7w[m +[36m[?2501hHello1 ⸤Hello23⸣ Hello456 שָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456[?2501l[m + +[01mRTL + LTR[m +[00mShlm1 ⸤Shlm23⸣ Shlm456 Hello1 ⸤Hello23⸣ Hello456[m + [32mHello1 ⸤Hello23⸣ Hello456 456oi7w ⸢23oi7w⸥ 1oi7w[m +[36m[?2501hשָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456 Hello1 ⸤Hello23⸣ Hello456[?2501l[m + +[01mParagraph wrapping at foreign word[m +[32mLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor w[m +[32moi7 incididunt ut labore et dolore magna aliqua.[m +[36m[?2501hLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor שָׁלוֹם incididunt ut labore et dolore magna aliqua.[?2501l[m + +[01mArabic shaping[m + [32m──╶╶╶─╶ ─── ─────╶ ─ ───╶──╶[m +[36m[?2501hالطرفية – استعمل سطر الأوامر[?2501l[m + +[01mCombining accents[m +[00mShlm Hungarian accents demo[m +[32m Árvíztűrő tükörfúrógép oi7w[m +[36m[?2501hשָׁלוֹם Árvíztűrő tükörfúrógép[?2501l[m + +[01mBox[m +[32m┏━┓ a╔═╗z n┌─┐x ╭─╮[m[?2501h +[36m┗━┛ a╚═╝z א┘─└ת ╰─╯[m[?2501l + +[01mBox in mirrored mode[m +[32m┏━┓ a╔═╗z n┌─┐x ╭─╮[m[?2501h[?2500h +[36m┗━┛ a╚═╝z א└─┘ת ╰─╯[m[?2500l[?2501l + + ┌──────────────────────────────────┐ +──────────────────────┤ 4 – Implicit auto (RTL fallback) ├────────────────────── + └──────────────────────────────────┘ +[01mLTR + RTL[m +[00mHello1 ⸤Hello23⸣ Hello456 Shlm1 ⸤Shlm23⸣ Shlm456[m +[32mHello1 ⸤Hello23⸣ Hello456 456oi7w ⸢23oi7w⸥ 1oi7w[m +[36m[2 k[?2501hHello1 ⸤Hello23⸣ Hello456 שָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456[?2501l[1 k[m + +[01mRTL + LTR[m +[00mShlm1 ⸤Shlm23⸣ Shlm456 Hello1 ⸤Hello23⸣ Hello456[m + [32mHello1 ⸤Hello23⸣ Hello456 456oi7w ⸢23oi7w⸥ 1oi7w[m +[36m[2 k[?2501hשָׁלוֹם1 ⸤שָׁלוֹם23⸣ שָׁלוֹם456 Hello1 ⸤Hello23⸣ Hello456[?2501l[1 k[m + +[01mParagraph wrapping at foreign word[m +[32mLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor w[m +[32moi7 incididunt ut labore et dolore magna aliqua.[m +[36m[2 k[?2501hLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor שָׁלוֹם incididunt ut labore et dolore magna aliqua.[?2501l[1 k[m + +[01mArabic shaping[m + [32m──╶╶╶─╶ ─── ─────╶ ─ ───╶──╶[m +[36m[2 k[?2501hالطرفية – استعمل سطر الأوامر[?2501l[1 k[m + +[01mCombining accents[m +[00mShlm Hungarian accents demo[m +[32m Árvíztűrő tükörfúrógép oi7w[m +[36m[2 k[?2501hשָׁלוֹם Árvíztűrő tükörfúrógép[?2501l[1 k[m + +[01mBox[m + [32m╭─╮ a┌─┐z n╔═╗x ┏━┓[m[2 k[?2501h +[36m┛━┗ א╝═╚ת a└─┘z ╯─╰[m[?2501l[1 k + +[01mBox in mirrored mode[m + [32m╭─╮ a┌─┐z n╔═╗x ┏━┓[m[2 k[?2501h[?2500h +[36m┗━┛ א╚═╝ת a└─┘z ╰─╯[m[?2500l[?2501l[1 k + + ┌──────────────────┐ +──────────────────────────────┤ 5 – Explicit LTR ├────────────────────────────── + └──────────────────┘ +[01mLTR + fake RTL[m +[00m⸤Hello⸣ ⸤mlhS⸣[m +[32m⸤Hello⸣ ⸤oi7w⸣[m +[36m[8l⸤Hello⸣ ⸤םוֹלשָׁ⸣[8h[m + +[01mFake RTL + RTL[m +[00m⸤mlhS⸣ ⸤Hello⸣[m +[32m⸤oi7w⸣ ⸤Hello⸣[m +[36m[8l⸤םוֹלשָׁ⸣ ⸤Hello⸣[8h[m + +[01mArabic shaping[m +[32m──╶╶╶─╶ ─── ─────╶ ─ ───╶──╶[m +[36m[8lرماوألا رطس لمعتسا – ةيفرطلا[8h[m + +[01mCombining accents[m +[00mmlhS Hungarian accents demo[m +[32moi7w Árvíztűrő tükörfúrógép[m +[36m[8lםוֹלשָׁ Árvíztűrő tükörfúrógép[8h[m + +[01mBox[m +[32m┏━┓ a╔═╗z n┌─┐x ╭─╮[m[8l +[36m┗━┛ a╚═╝z ת└─┘א ╰─╯[m[8h + +[01mBox in mirrored mode[m +[32m┏━┓ a╔═╗z n┌─┐x ╭─╮[m[8l[?2500h +[36m┗━┛ a╚═╝z ת└─┘א ╰─╯[m[?2500l[8h + + ┌──────────────────┐ +──────────────────────────────┤ 6 – Explicit RTL ├────────────────────────────── + └──────────────────┘ +[01mFake LTR + RTL[m +[00m⸤olleH⸣ ⸤Shlm⸣[m + [32m⸢oi7w⸥ ⸢Hello⸥[m +[36m[8l[2 k⸤olleH⸣ ⸤שָׁלוֹם⸣[1 k[8h[m + +[01mRTL + fake LTR[m +[00m⸤Shlm⸣ ⸤olleH⸣[m + [32m⸢Hello⸥ ⸢oi7w⸥[m +[36m[8l[2 k⸤שָׁלוֹם⸣ ⸤olleH⸣[1 k[8h[m + +[01mFullwidth characters with underlines[m + [32m[Lorem [4mipsum[24m dolor [21msit[24m amet)[m +[36m[8l[2 k(tema [21mtis[24m rolod [4mmuspi[24m meroL][1 k[8h[m + +[01mArabic shaping[m + [32m──╶╶╶─╶ ─── ─────╶ ─ ───╶──╶[m +[36m[8l[2 kالطرفية – استعمل سطر الأوامر[1 k[8h[m + +[01mCombining accents[m +[00mShlm omed stnecca nairagnuH[m +[32m Árvíztűrő tükörfúrógép oi7w[m +[36m[8l[2 k[?2501hשָׁלוֹם pégórúfröküt őrűtzívrÁ[?2501l[1 k[8h[m + +[01mBox[m + [32m╭─╮ a┌─┐z n╔═╗x ┏━┓[m[8l[2 k +[36m┛━┗ א╝═╚ת z┘─└a ╯─╰[m[1 k[8h + +[01mBox in mirrored mode[m + [32m╭─╮ a┌─┐z n╔═╗x ┏━┓[m[8l[2 k[?2500h +[36m┗━┛ א╚═╝ת z└─┘a ╰─╯[m[?2500l[1 k[8h + + ┌────────────────┐ +───────────────────────────────┤ 7 – Misc tests ├─────────────────────────────── + └────────────────┘ +[01mNumbers inside RTL, across linebreak[m +[00mjumps Shalom 123 456 789 Shalom![m +[32mThe quick brown fox jumps over the lazy dog The quick brown fox jumps 4 123 oi7w[m +[32moi7w 789 56![m +[36mThe quick brown fox jumps over the lazy dog The quick brown fox jumps שָׁלוֹם 123 456 789 שָׁלוֹם![m + +[01mMirroring across linebreak[m +[00mjumps Shalom <[<[<[<[ Shalom![m +[32mThe quick brown fox jumps over the lazy dog The quick brown fox jumps >]>]> oi7w[m +[32moi7w ]>]![m +[36mThe quick brown fox jumps over the lazy dog The quick brown fox jumps שָׁלוֹם <[<[<[<[ שָׁלוֹם![m + +[01mAttributes[m +[00mHel[4mlo1 Shlm2[24m3 Shl[21mm456 H[24mello7890[m +[32mHel[4mlo1 [24m[21m456o[24mi7w [4m2[24m3[4moi7w[24m[21m H[24mello7890[m +[36mHel[4mlo1 שָׁלוֹם2[24m3 שָׁלוֹ[21mם456 H[24mello7890[m + +[01mLink autodetection, overall LTR[m +[00mhttps!//he.wikipedia.org/wiki/Front_page[m +[32m[4mhttps!//he.wikipedia.org/wiki/'wxᒣ_tiny[24m[m +[36mhttps://he.wikipedia.org/wiki/עמוד_ראשי[m + +[01mLink autodetection, overall LTR (should look broken)[m +[00mhttps!//he.wikipedia.org/wiki/Front_page Shalom[m +[32m[4mhttps!//he.wikipedia.org/wiki/[24moi7w [4m'wxᒣ_tiny[24m[m +[36mhttps://he.wikipedia.org/wiki/עמוד_ראשי שָׁלוֹם[m + +[01mLink autodetection, overall RTL[m +[00mShalom1 http!//example.com/test Shalom23[m +[32m 23oi7w [4mhttp!//example.com/test[24m 1oi7w[m +[36m[2 kשָׁלוֹם1 http://example.com/test שָׁלוֹם23[1 k[m + +[01mLink autodetection, overall RTL (should look broken)[m +[00mShalom1 http!//example.com/test/ Shalom23[m +[32m 23oi7w [4m/http!//example.com/test[24m 1oi7w[m +[36m[2 kשָׁלוֹם1 http://example.com/test/ שָׁלוֹם23[1 k[m + +[01mExplicit hyperlinks[m +[00m[4mHello1 Shlm23[24m [4mShlm456 Hello7890[24m[m +[32m[4mHello1 [24m456oi7w [4m23oi7w[24m Hello7890[m +[32mHello1 [4m456oi7w[24m 23oi7w[4m Hello7890[24m[m +[36m]8;;http://example.com/hello123\Hello1 שָׁלוֹם23]8;;\ ]8;;http://example.com/hello4567890\שָׁלוֹם456 Hello7890]8;;\[m + +──────────────────────────────────────────────────────────────────────────────── diff --git a/perf/bidi.sh b/perf/bidi.sh new file mode 100644 index 00000000..a4984606 --- /dev/null +++ b/perf/bidi.sh @@ -0,0 +1,39 @@ +# BiDi support in VTE is implemented according to +# https://terminal-wg.pages.freedesktop.org/bidi/ +# +# The following aliases allow you to quickly change the BiDi mode. +# +# These are not meant to be standardized command names. Customize them +# according to your liking, and don't rely on them being available for others. + +# Bi-Directional Support Mode (BDSM): +# In implicit mode the terminal emulator performs BiDi. +# In explicit mode the terminal emulator lays out the characters in linear +# order, and the application running inside is expected to do BiDi. +alias implicit='printf "\e[8h"' +alias explicit='printf "\e[8l"' + +# Select Character Path (SCP): +# Defines the paragraph direction for explicit mode, and for implicit mode +# without autodetection. Defines the fallback paragraph direction (in case +# autodetection fails) for implicit mode with autodetection. +alias ltr='printf "\e[1 k"' +alias rtl='printf "\e[2 k"' +# alias defaultdir='printf "\e[ k"' # currently the same as ltr + +# Autodetection: +# Whether in implicit mode the paragraph direction is autodetected (possibly +# falling back to the value set by SCP), or taken strictly from SCP. +alias autodir='printf "\e[?2501h"' +alias noautodir='printf "\e[?2501l"' + +# Box mirroring: +# Whether box drawing characters are added to the set of mirrorable glyphs. +alias boxmirror='printf "\e[?2500h"' +alias noboxmirror='printf "\e[?2500l"' + +# Keyboard arrow swapping: +# Whether the left and right arrows of the keyboard are swapped whenever the +# cursor stands within an RTL paragraph. +alias kbdswap='printf "\e[?1243h"' +alias nokbdswap='printf "\e[?1243l"' |