contour

Tested Software version 0.6.3.8249 on Linux. The homepage URL of this terminal is https://contour-terminal.org/. Full results available at ucs-detect repository path data/contour.yaml.

Score Breakdown

Detailed breakdown of how scores are calculated for contour:

#

Score Type

Raw Score

Final Scaled Score

1

WIDE

100.00%

100.0%

2

NARROW

100.00%

100.0%

3

ZWJ

96.26%

96.3%

4

LANG

82.50%

82.5%

5

VS16

50.00%

50.0%

6

VS15

0.00%

(excluded)

7

SRI

100.00%

100.0%

8

SFZ

100.00%

100.0%

9

RI

100.00%

100.0%

10

FEAT

75.00%

80.0%

11

Graphics

50%

50.0%

12

Resources

41.5%

41.5%

Score Comparison Plot:

The following plot shows how this terminal’s scores compare to all other terminals tested.

../_images/contour_scores_scaled.png

Scaled scores comparison across all metrics (normalized 0-100%)

Final Scaled Score Calculation:

  • Raw Final Score: 74.09% (weighted average: WIDE + NARROW + ZWJ + LANG + VS16 + 0.33 * SRI + 0.33 * SFZ + RI + CAP + 0.5 * GFX + 0.5 * RSC) the categorized ‘average’ absolute support level of this terminal.

    Note

    RSC (Resources) is a composite CPU, memory, and runtime score. RSC is weighted at 0.5 (half as powerful as other metrics). FEAT (Features) is the fraction of notable features supported. GFX (Graphics) scores 100% for modern protocols (iTerm2, Kitty), 50% for legacy only (Sixel, ReGIS), 0% for none.

  • Final Scaled Score: 65.8% (normalized across all terminals tested). Final Scaled scores are normalized (0-100%) relative to all terminals tested

WIDE Score Details:

Wide character support calculation:

  • Total successful codepoints: 43592

  • Total codepoints tested: 43592

  • Formula: 43592 / 43592

  • Result: 100.00%

NARROW Score Details:

Narrow character support calculation:

  • Total successful codepoints: 36254

  • Total codepoints tested: 36254

  • Formula: 36254 / 36254

  • Result: 100.00%

ZWJ Score Details:

Emoji ZWJ (Zero-Width Joiner) support calculation:

  • Total successful sequences: 1391

  • Total sequences tested: 1445

  • Formula: 1391 / 1445

  • Result: 96.26%

VS16 Score Details:

Variation Selector-16 support calculation:

  • Errors: 213 of 426 codepoints tested

  • Success rate: 50.0%

  • Formula: 50.0 / 100

  • Result: 50.00%

VS15 Score Details (excluded from final score):

Variation Selector-15 support calculation:

  • Errors: 158 of 158 codepoints tested

  • Success rate: 0.0%

  • Formula: 0.0 / 100

  • Result: 0.00%

SRI Score Details:

Standalone Regional Indicator support calculation:

  • Total successful codepoints: 26

  • Total codepoints tested: 26

  • Formula: 26 / 26

  • Result: 100.00%

SFZ Score Details:

Standalone Fitzpatrick skin tone modifier support calculation:

  • Total successful codepoints: 5

  • Total codepoints tested: 5

  • Formula: 5 / 5

  • Result: 100.00%

RI Score Details:

Regional Indicator flag sequence support calculation:

  • Total successful sequences: 262

  • Total sequences tested: 262

  • Formula: 262 / 262

  • Result: 100.00%

Features Score Details:

Notable terminal features (12.0 / 16):

Raw score: 75.00%

Graphics Score Details:

Graphics protocol support (50%):

  • Sixel: yes

  • ReGIS: no

  • iTerm2: no

  • Kitty: no

Scoring: 100% for modern (iTerm2/Kitty), 50% for legacy only (Sixel/ReGIS), 0% for none

Resource Score Details:

  • Duration: 57.2s

  • Mean CPU: 32.9%

  • Mean RSS: 185.8 MB

  • Resources Score: 42/100

  • Note: log-scale composite cost = log(CPU+1) + log(RSS+1) + log(time+1)

  • Scaled result: 41.5%

LANG Score Details (Geometric Mean):

Geometric mean calculation:

  • Formula: (p₁ × p₂ × … × pₙ)^(1/n) where n = 118 languages

  • About geometric mean

  • Result: 82.50%

Wide character support

Wide character support of contour is 100.0% (0 errors of 43592 codepoints tested).

Narrow character support

Narrow character support of contour is 100.0% (0 errors of 36254 codepoints tested).

Emoji ZWJ support

Compatibility of contour with the Unicode Emoji ZWJ sequence table is 96.3% (54 errors of 1445 sequences tested).

Sequence of an Emoji ZWJ Sequence, from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0001F3CC

‘\U0001f3cc’

So

1

GOLFER

2

U+0001F3FC

‘\U0001f3fc’

Sk

2

EMOJI MODIFIER FITZPATRICK TYPE-3

3

U+200D

‘\u200d’

Cf

0

ZERO WIDTH JOINER

4

U+2642

‘\u2642’

So

1

MALE SIGN

5

U+FE0F

‘\ufe0f’

Mn

0

VARIATION SELECTOR-16

Total codepoints: 5

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xf0\x9f\x8f\x8c\xf0\x9f\x8f\xbc\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f|\\n12|\\n"
    🏌🏼‍♂️|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Variation Selector-16 support

Emoji VS-16 results for contour is 213 errors out of 426 total codepoints tested, 50.0% success. Sequence of a NARROW Emoji made WIDE by Variation Selector-16, from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+2733

‘\u2733’

So

1

EIGHT SPOKED ASTERISK

2

U+FE0F

‘\ufe0f’

Mn

0

VARIATION SELECTOR-16

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe2\x9c\xb3\xef\xb8\x8f|\\n12|\\n"
    ✳️|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Variation Selector-15 support

Emoji VS-15 results for contour is 158 errors out of 158 total codepoints tested, 0.0% success. Sequence of a WIDE Emoji made NARROW by Variation Selector-15, from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0001F3AE

‘\U0001f3ae’

So

2

VIDEO GAME

2

U+FE0E

‘\ufe0e’

Mn

0

VARIATION SELECTOR-15

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xf0\x9f\x8e\xae\xef\xb8\x8e|\\n1|\\n"
    🎮︎|
    1|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Standalone Regional Indicator support

Standalone Regional Indicator support of contour is 100.0% (0 errors of 26 codepoints tested).

Standalone Fitzpatrick modifier support

Standalone Fitzpatrick skin tone modifier support of contour is 100.0% (0 errors of 5 codepoints tested).

Regional Indicator flag sequence support

Regional Indicator flag sequence support of contour is 100.0% (0 errors of 262 sequences tested).

Graphics Protocol Support

contour supports the following graphics protocols: Sixel.

Detection Methods:

  • Sixel and ReGIS: Detected via the Device Attributes (DA1) query CSI c (\x1b[c). Extension code 4 indicates Sixel support, 3 ReGIS.

  • Kitty graphics: Detected by sending a Kitty graphics query and checking for an OK response.

  • iTerm2 inline images: Detected via the iTerm2 capabilities query OSC 1337 ; Capabilities.

Device Attributes Response:

  • Extensions reported: 1, 4, 8, 22, 28, 52, 314

  • Sixel indicator (4): present

  • ReGIS indicator (3): not present

Language Support

The following 88 languages were tested with 100% success:

(Jinan), (Yeonbyeon), Aja, Amarakaeri, Arabic, Standard, Assyrian Neo-Aramaic, Baatonum, Bamun, Belanda Viri, Bora, Catalan (2), Chickasaw, Chinantec, Chiltepec, Chinese, Gan, Chinese, Hakka, Chinese, Jinyu, Chinese, Mandarin (Beijing), Chinese, Mandarin (Guiyang), Chinese, Mandarin (Harbin), Chinese, Mandarin (Nanjing), Chinese, Mandarin (Simplified), Chinese, Mandarin (Tianjin), Chinese, Mandarin (Traditional), Chinese, Min Nan, Chinese, Wu, Chinese, Xiang, Chinese, Yue, Colorado, Dagaare, Southern, Dangme, Dari, Dendi, Dinka, Northeastern, Ditammari, Dzongkha, Evenki, Farsi, Western, Fon, French (Welche), Fur, Ga, Gen, Gilyak, Gumuz, Japanese, Japanese (Osaka), Japanese (Tokyo), Kabyle, Korean, Lamnso’, Lingala (tones), Maldivian, Maori (2), Mazahua Central, Mirandese, Mixtec, Metlatónoc, Mongolian, Halh (Mongolian), Mòoré, Nanai, Navajo, Nuosu, Orok, Otomi, Mezquital, Panjabi, Western, Pashto, Northern, Picard, Pular (Adlam), Saint Lucian Creole French, Secoya, Seraiki, Shipibo-Conibo, Siona, South Azerbaijani, Tagalog (Tagalog), Tai Dam, Tamazight, Central Atlas, Tem, Tibetan, Central, Ticuna, Uduk, Veps, Vietnamese, Vietnamese (Han nom), Waama, Yaneshaʼ, Yiddish, Eastern, Yoruba, Éwé.

The following 30 languages are not fully supported:

lang

n_errors

n_total

pct_success

Bengali

299

385

22.3%

Malayalam

647

845

23.4%

Sanskrit

367

493

25.6%

Nepali

244

352

30.7%

Javanese (Javanese)

362

530

31.7%

Marathi

264

391

32.5%

Hindi

263

390

32.6%

Sanskrit (Grantha)

197

293

32.8%

Maithili

236

357

33.9%

Khmer, Central

287

443

35.2%

Gujarati

216

343

37.0%

Khün

242

396

38.9%

Tamil

106

175

39.4%

Tamil (Sri Lanka)

106

175

39.4%

Magahi

190

314

39.5%

Telugu

231

384

39.8%

Tamang, Eastern

42

70

40.0%

Bhojpuri

186

313

40.6%

Kannada

157

287

45.3%

Sinhala

101

258

60.9%

Panjabi, Eastern

103

302

65.9%

Burmese

89

268

66.8%

Chakma

84

267

68.5%

Mon

98

332

70.5%

Shan

18

181

90.1%

Thai

14

262

94.7%

Thai (2)

11

252

95.6%

Lao

10

277

96.4%

Urdu (2)

1

82

98.8%

Urdu

1

110

99.1%

Bengali

Sequence of language Bengali from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0985

‘\u0985’

Lo

1

BENGALI LETTER A

2

U+0982

‘\u0982’

Mc

0

BENGALI SIGN ANUSVARA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa6\x85\xe0\xa6\x82|\\n12|\\n"
    অং|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Malayalam

Sequence of language Malayalam from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0D05

‘\u0d05’

Lo

1

MALAYALAM LETTER A

2

U+0D02

‘\u0d02’

Mc

0

MALAYALAM SIGN ANUSVARA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xb4\x85\xe0\xb4\x82|\\n12|\\n"
    അം|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Sanskrit

Sequence of language Sanskrit from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Nepali

Sequence of language Nepali from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Javanese (Javanese)

Sequence of language Javanese (Javanese) from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+A98F

‘\ua98f’

Lo

1

JAVANESE LETTER KA

2

U+A983

‘\ua983’

Mc

0

JAVANESE SIGN WIGNYAN

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xea\xa6\x8f\xea\xa6\x83|\\n12|\\n"
    ꦏꦃ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Marathi

Sequence of language Marathi from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Hindi

Sequence of language Hindi from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Sanskrit (Grantha)

Sequence of language Sanskrit (Grantha) from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+00011305

‘\U00011305’

Lo

1

GRANTHA LETTER A

2

U+00011302

‘\U00011302’

Mc

0

GRANTHA SIGN ANUSVARA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xf0\x91\x8c\x85\xf0\x91\x8c\x82|\\n12|\\n"
    𑌅𑌂|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Maithili

Sequence of language Maithili from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Khmer, Central

Sequence of language Khmer, Central from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+1780

‘\u1780’

Lo

1

KHMER LETTER KA

2

U+17B6

‘\u17b6’

Mc

0

KHMER VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe1\x9e\x80\xe1\x9e\xb6|\\n12|\\n"
    កា|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Gujarati

Sequence of language Gujarati from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0A95

‘\u0a95’

Lo

1

GUJARATI LETTER KA

2

U+0A83

‘\u0a83’

Mc

0

GUJARATI SIGN VISARGA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xaa\x95\xe0\xaa\x83|\\n12|\\n"
    કઃ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Khün

Sequence of language Khün from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+1A20

‘\u1a20’

Lo

1

TAI THAM LETTER HIGH KA

2

U+1A60

‘\u1a60’

Mn

0

TAI THAM SIGN SAKOT

3

U+1A20

‘\u1a20’

Lo

1

TAI THAM LETTER HIGH KA

Total codepoints: 3

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe1\xa8\xa0\xe1\xa9\xa0\xe1\xa8\xa0|\\n12|\\n"
    ᨠ᩠ᨠ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Tamil

Sequence of language Tamil from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0B95

‘\u0b95’

Lo

1

TAMIL LETTER KA

2

U+0BBE

‘\u0bbe’

Mc

0

TAMIL VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xae\x95\xe0\xae\xbe|\\n12|\\n"
    கா|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Tamil (Sri Lanka)

Sequence of language Tamil (Sri Lanka) from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0B95

‘\u0b95’

Lo

1

TAMIL LETTER KA

2

U+0BBE

‘\u0bbe’

Mc

0

TAMIL VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xae\x95\xe0\xae\xbe|\\n12|\\n"
    கா|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Magahi

Sequence of language Magahi from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Telugu

Sequence of language Telugu from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0C05

‘\u0c05’

Lo

1

TELUGU LETTER A

2

U+0C02

‘\u0c02’

Mc

0

TELUGU SIGN ANUSVARA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xb0\x85\xe0\xb0\x82|\\n12|\\n"
    అం|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Tamang, Eastern

Sequence of language Tamang, Eastern from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Bhojpuri

Sequence of language Bhojpuri from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0915

‘\u0915’

Lo

1

DEVANAGARI LETTER KA

2

U+093E

‘\u093e’

Mc

0

DEVANAGARI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa4\x95\xe0\xa4\xbe|\\n12|\\n"
    का|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Kannada

Sequence of language Kannada from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0C85

‘\u0c85’

Lo

1

KANNADA LETTER A

2

U+0C82

‘\u0c82’

Mc

0

KANNADA SIGN ANUSVARA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xb2\x85\xe0\xb2\x82|\\n12|\\n"
    ಅಂ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Sinhala

Sequence of language Sinhala from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0D9A

‘\u0d9a’

Lo

1

SINHALA LETTER ALPAPRAANA KAYANNA

2

U+0DCF

‘\u0dcf’

Mc

0

SINHALA VOWEL SIGN AELA-PILLA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xb6\x9a\xe0\xb7\x8f|\\n12|\\n"
    කා|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Panjabi, Eastern

Sequence of language Panjabi, Eastern from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0A15

‘\u0a15’

Lo

1

GURMUKHI LETTER KA

2

U+0A3E

‘\u0a3e’

Mc

0

GURMUKHI VOWEL SIGN AA

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xa8\x95\xe0\xa8\xbe|\\n12|\\n"
    ਕਾ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Burmese

Sequence of language Burmese from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+1000

‘\u1000’

Lo

1

MYANMAR LETTER KA

2

U+1031

‘\u1031’

Mc

0

MYANMAR VOWEL SIGN E

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe1\x80\x80\xe1\x80\xb1|\\n12|\\n"
    ကေ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Chakma

Sequence of language Chakma from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+00011103

‘\U00011103’

Lo

1

CHAKMA LETTER AA

2

U+0001112C

‘\U0001112c’

Mc

0

CHAKMA VOWEL SIGN E

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xf0\x91\x84\x83\xf0\x91\x84\xac|\\n12|\\n"
    𑄃𑄬|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Mon

Sequence of language Mon from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+1000

‘\u1000’

Lo

1

MYANMAR LETTER KA

2

U+1031

‘\u1031’

Mc

0

MYANMAR VOWEL SIGN E

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe1\x80\x80\xe1\x80\xb1|\\n12|\\n"
    ကေ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Shan

Sequence of language Shan from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+1010

‘\u1010’

Lo

1

MYANMAR LETTER TA

2

U+1031

‘\u1031’

Mc

0

MYANMAR VOWEL SIGN E

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe1\x80\x90\xe1\x80\xb1|\\n12|\\n"
    တေ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Thai

Sequence of language Thai from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0E01

‘\u0e01’

Lo

1

THAI CHARACTER KO KAI

2

U+0E33

‘\u0e33’

Lo

1

THAI CHARACTER SARA AM

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xb8\x81\xe0\xb8\xb3|\\n12|\\n"
    กำ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Thai (2)

Sequence of language Thai (2) from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0E01

‘\u0e01’

Lo

1

THAI CHARACTER KO KAI

2

U+0E33

‘\u0e33’

Lo

1

THAI CHARACTER SARA AM

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xb8\x81\xe0\xb8\xb3|\\n12|\\n"
    กำ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Lao

Sequence of language Lao from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0E81

‘\u0e81’

Lo

1

LAO LETTER KO

2

U+0EB3

‘\u0eb3’

Lo

1

LAO VOWEL SIGN AM

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xe0\xba\x81\xe0\xba\xb3|\\n12|\\n"
    ກຳ|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Urdu (2)

Sequence of language Urdu (2) from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0601

‘\u0601’

Cf

1

ARABIC SIGN SANAH

2

U+06F1

‘\u06f1’

Nd

1

EXTENDED ARABIC-INDIC DIGIT ONE

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xd8\x81\xdb\xb1|\\n12|\\n"
    ؁۱|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

Urdu

Sequence of language Urdu from midpoint of alignment failure records:

#

Codepoint

Python

Category

wcwidth

Name

1

U+0601

‘\u0601’

Cf

1

ARABIC SIGN SANAH

2

U+06F1

‘\u06f1’

Nd

1

EXTENDED ARABIC-INDIC DIGIT ONE

Total codepoints: 2

  • Shell test using printf(1), '|' should align in output:

    $ printf "\xd8\x81\xdb\xb1|\\n12|\\n"
    ؁۱|
    12|
    

Screenshot:

Terminal screenshot of the rendering discrepancy

DEC Private Modes Support

DEC private modes results for contour: 6 changeable modes of 6 supported out of 8 total modes tested (75.0% support, 75.0% changeable).

Complete list of DEC private modes tested:

Mode

Name

Description

Supported

Changeable

Enabled

1004

FOCUS_IN_OUT_EVENTS

Send FocusIn/FocusOut events

Yes

Yes

No

1006

MOUSE_EXTENDED_SGR

Enable SGR Mouse Mode

Yes

Yes

No

2004

BRACKETED_PASTE

Set bracketed paste mode

Yes

Yes

No

2026

SYNCHRONIZED_OUTPUT

Synchronized Output

Yes

Yes

No

2027

GRAPHEME_CLUSTERING

Grapheme Clustering

Yes

Yes

Yes

2031

COLOR_PALETTE_UPDATES

Color palette updates

Yes

Yes

No

2048

IN_BAND_WINDOW_RESIZE

In-Band Window Resize Notifications

No

No

No

5522

BRACKETED_PASTE_MIME

Bracketed Paste MIME

No

No

No

Summary: 6 changeable, 2 not changeable.

Kitty Keyboard Protocol

contour supports the Kitty keyboard protocol.

#

Flag

Key

State

1

Disambiguate escape codes

disambiguate

No

2

Report event types

report_events

No

3

Report alternate keys

report_alternates

No

4

Report all keys as escape codes

report_all_keys

No

5

Report associated text

report_text

No

Detection is performed by sending CSI ? u to query the current progressive enhancement flags. A terminal that supports this protocol responds with the active flags value.

XTGETTCAP (Terminfo Capabilities)

contour supports the XTGETTCAP sequence and reports 192 terminfo capabilities (Full).

#

Capability

Description

Value

1

Cs

Reset cursor color

\E]12;%p1%s\E\

2

E3

Erase scrollback

\E[3J

3

RGB

Bits per color channel (8 = 24-bit truecolor)

8/8/8

4

Rmol

Reset overline mode

\E[55m

5

Se

Reset underline style

\E[ q

6

Setulc

Set underline color

\E[58:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&...

7

Smol

Set overline mode

\E[53m

8

Smulx

Styled underline

\E[4:%p1%dm

9

Ss

Set underline style

\E[%p1%d q

10

Su

Colored underlines

(empty)

11

Sync

Synchronized output

\E[?2026%?%p1%{1}%-%tl%eh

12

TN

Terminal name

xterm-256color

13

Tc

Truecolor (24-bit RGB)

(empty)

14

acsc

Alternate character set

``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~

15

am

Auto right margin

(empty)

16

bce

Background color erase

(empty)

17

bel

Bell

\a

18

bold

Enter bold mode

\E[1m

19

ccc

Can redefine colors

(empty)

20

civis

Hide cursor

\E[?25l

21

clear

Clear screen

\E[H\E[2J

22

cnorm

Normal cursor

\E[?12l\E[?25h

23

colors

Max colors on screen

\x01\x00

24

cols

Columns

P

25

cr

Carriage return

\r

26

csr

Change scroll region

\E[%i%p1%d;%p2%dr

27

cub

Cursor left n

\E[%p1%dD

28

cub1

Cursor left

\b

29

cud

Cursor down n

\E[%p1%dB

30

cud1

Cursor down

\n

31

cuf

Cursor right n

\E[%p1%dC

32

cuf1

Cursor right

\E[C

33

cup

Cursor address

\E[%i%p1%d;%p2%dH

34

cuu

Cursor up n

\E[%p1%dA

35

cuu1

Cursor up

\E[A

36

cvvis

Very visible cursor

\E[?12;25h

37

dch

Delete n characters

\E[%p1%dP

38

dch1

Delete character

\E[P

39

dim

Enter dim mode

\E[2m

40

dl

Delete n lines

\E[%p1%dM

41

dl1

Delete line

\E[M

42

dsl

Disable status line

\E[$~

43

ech

Erase characters

\E[%p1%dX

44

ed

Clear to end of screen

\E[J

45

el

Clear to end of line

\E[K

46

el1

Clear to start of line

\E[1K

47

eslok

Status line escape OK

(empty)

48

flash

Flash screen

\E[?5h$<100/>\E[?5l

49

fsl

From status line

\E[$}

50

home

Cursor home

\E[H

51

hpa

Horizontal position

\E[%i%p1%dG

52

hs

Has status line

(empty)

53

ht

Horizontal tab

\t

54

hts

Set tab stop

\EH

55

ich

Insert n characters

\E[%p1%d@

56

il

Insert n lines

\E[%p1%dL

57

il1

Insert line

\E[L

58

ind

Scroll forward

\n

59

indn

Scroll forward n

\E[%p1%dS

60

initc

Initialize color

\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{100...

61

invis

Invisible cursor

\E[8m

62

it

Init tabs

\b

63

kDC

Shifted delete-char key

\E[3;2~

64

kDC3

Alt delete-char key

\E[3;3~

65

kDC4

Alt-Shift delete-char key

\E[3;4~

66

kDC5

Ctrl delete-char key

\E[3;5~

67

kDC6

Ctrl-Shift delete-char key

\E[3;6~

68

kDC7

Ctrl-Alt delete-char key

\E[3;7~

69

kDN

Shifted down-arrow key

\E[1;2B

70

kDN3

Alt down-arrow key

\E[1;3B

71

kDN4

Alt-Shift down-arrow key

\E[1;4B

72

kDN5

Ctrl down-arrow key

\E[1;5B

73

kDN6

Ctrl-Shift down-arrow key

\E[1;6B

74

kDN7

Ctrl-Alt down-arrow key

\E[1;7B

75

kEND

Shifted end key

\E[1;2F

76

kEND3

Alt end key

\E[1;3F

77

kEND4

Alt-Shift end key

\E[1;4F

78

kEND5

Ctrl end key

\E[1;5F

79

kEND6

Ctrl-Shift end key

\E[1;6F

80

kEND7

Ctrl-Alt end key

\E[1;7F

81

kHOM

Shifted home key

\E[1;2H

82

kHOM3

Alt home key

\E[1;3H

83

kHOM4

Alt-Shift home key

\E[1;4H

84

kHOM5

Ctrl home key

\E[1;5H

85

kHOM6

Ctrl-Shift home key

\E[1;6H

86

kHOM7

Ctrl-Alt home key

\E[1;7H

87

kIC

Shifted insert-char key

\E[2;2~

88

kIC3

Alt insert-char key

\E[2;3~

89

kIC4

Alt-Shift insert-char key

\E[2;4~

90

kIC5

Ctrl insert-char key

\E[2;5~

91

kIC6

Ctrl-Shift insert-char key

\E[2;6~

92

kIC7

Ctrl-Alt insert-char key

\E[2;7~

93

kLFT

Shifted left-arrow key

\E[1;2D

94

kLFT3

Alt left-arrow key

\E[1;3D

95

kLFT4

Alt-Shift left-arrow key

\E[1;4D

96

kLFT5

Ctrl left-arrow key

\E[1;5D

97

kLFT6

Ctrl-Shift left-arrow key

\E[1;6D

98

kLFT7

Ctrl-Alt left-arrow key

\E[1;7D

99

kNXT

Shifted next-page key

\E[6;2~

100

kNXT3

Alt next-page key

\E[6;3~

101

kNXT4

Alt-Shift next-page key

\E[6;4~

102

kNXT5

Ctrl next-page key

\E[6;5~

103

kNXT6

Ctrl-Shift next-page key

\E[6;6~

104

kNXT7

Ctrl-Alt next-page key

\E[6;7~

105

kPRV

Shifted previous-page key

\E[5;2~

106

kPRV3

Alt previous-page key

\E[5;3~

107

kPRV4

Alt-Shift previous-page key

\E[5;4~

108

kPRV5

Ctrl previous-page key

\E[5;5~

109

kPRV6

Ctrl-Shift previous-page key

\E[5;6~

110

kPRV7

Ctrl-Alt previous-page key

\E[5;7~

111

kRIT

Shifted right-arrow key

\E[1;2C

112

kRIT3

Alt right-arrow key

\E[1;3C

113

kRIT4

Alt-Shift right-arrow key

\E[1;4C

114

kRIT5

Ctrl right-arrow key

\E[1;5C

115

kRIT6

Ctrl-Shift right-arrow key

\E[1;6C

116

kRIT7

Ctrl-Alt right-arrow key

\E[1;7C

117

kUP

Shifted up-arrow key

\E[1;2A

118

kUP3

Alt up-arrow key

\E[1;3A

119

kUP4

Alt-Shift up-arrow key

\E[1;4A

120

kUP5

Ctrl up-arrow key

\E[1;5A

121

kUP6

Ctrl-Shift up-arrow key

\E[1;6A

122

kUP7

Ctrl-Alt up-arrow key

\E[1;7A

123

kbs

Backspace key



124

kcbt

Back-tab key

\E[Z

125

kcub1

Left arrow key

\EOD

126

kcud1

Down arrow key

\EOB

127

kcuf1

Right arrow key

\EOC

128

kcuu1

Up arrow key

\EOA

129

kdch1

Delete character key

\E[3~

130

kend

End key

\EOF

131

kf1

Function key F1

\EOP

132

kf10

Function key F10

\E[21~

133

kf11

Function key F11

\E[23~

134

kf12

Function key F12

\E[24~

135

kf2

Function key F2

\EOQ

136

kf3

Function key F3

\EOR

137

kf4

Function key F4

\EOS

138

kf5

Function key F5

\E[15~

139

kf6

Function key F6

\E[17~

140

kf7

Function key F7

\E[18~

141

kf8

Function key F8

\E[19~

142

kf9

Function key F9

\E[20~

143

khome

Home key

\EOH

144

kich1

Insert character key

\E[2~

145

kind

Scroll-down key

\E[1;2B

146

km

Has meta key

(empty)

147

kmous

Mouse key

\E[M

148

knp

Next page key

\E[6~

149

kpp

Previous page key

\E[5~

150

kri

Scroll-up key

\E[1;2A

151

lines

Lines

\x18

152

mc5i

Will not echo input

(empty)

153

mir

Move in insert mode

(empty)

154

msgr

Move in standout mode

(empty)

155

npc

No pad character

(empty)

156

oc

Original colors

\E]104\E\

157

op

Original pair

\E[39;49m

158

pairs

Max color pairs

\x01\x00\x00

159

rc

Restore cursor

\E8

160

rep

Repeat character

%p1%c\E[%p2%{1}%-%db

161

rev

Enter reverse mode

\E[7m

162

ri

Reverse index

\EM

163

rin

Scroll reverse n

\E[%p1%dT

164

ritm

Exit italics mode

\E[23m

165

rmacs

Exit alternate charset mode

\E(B

166

rmam

Disable line wrap

\E[?7l

167

rmcup

Exit alt screen

\E[?1049l

168

rmir

Exit insert mode

\E[4l

169

rmkx

Keypad local mode

\E[?1l

170

rmso

Exit standout mode

\E[27m

171

rmul

Exit underline mode

\E[24m

172

rs1

Reset string 1

\E]\E\\Ec

173

sc

Save cursor

\E7

174

setab

Set background color

\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%...

175

setaf

Set foreground color

\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p...

176

setrgbb

Set RGB background

\E[48:2:%p1%d:%p2%d:%p3%dm

177

setrgbf

Set RGB foreground

\E[38:2:%p1%d:%p2%d:%p3%dm

178

sgr

Set attributes

%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t...

179

sgr0

Reset attributes

\E(B\E[m

180

sitm

Enter italics mode

\E[3m

181

smacs

Enter alternate charset mode

\E(0

182

smam

Enable line wrap

\E[?7h

183

smcup

Enter alt screen

\E[?1049h

184

smir

Enter insert mode

\E[4h

185

smkx

Keypad transmit mode

\E[?1h

186

smso

Enter standout mode

\E[7m

187

smul

Enter underline mode

\E[4m

188

tbc

Clear all tabs

\E[3g

189

tsl

To status line

\E[2$~\E[1$}\E[H\E[2J

190

vpa

Vertical position

\E[%i%p1%dd

191

xenl

Newline glitch

(empty)

192

xvpa

Extended vertical positioning

(empty)

The XTGETTCAP sequence (DCS + q Pt ST) allows applications to query terminfo capabilities directly from the terminal emulator, rather than relying on the system terminfo database.

Text Sizing Protocol (OSC 66)

contour does not support the Text Sizing protocol.

Truecolor Support

contour supports 24-bit truecolor, detectable via:

  • XTGETTCAP (RGB capability): yes (RGB)

  • DECRQSS (truecolor probe): yes (probe)

  • COLORTERM: yes (truecolor)

OSC 52 Clipboard Support

contour supports OSC 52 clipboard operations (detected via DA1 extension 52).

  • DA1 extension 52: yes

  • XTGETTCAP Ms: no

Terminal Identification

contour is identified as contour version 0.6.3.8249 (detected via XTVERSION).

  • XTVERSION (raw): contour 0.6.3.8249

  • XTVERSION: yes

  • XTGETTCAP TN: yes (xterm-256color)

  • ENQ: no

  • TERM_PROGRAM: no

  • TERM: yes (contour)

Reproduction

To reproduce these results for contour, install and run ucs-detect with the following commands:

uvx ucs-detect --rerun data/contour.yaml

Test Performance

The test suite completed in 57.21 seconds (57s).

  • Mean CPU: 32.9%

  • Mean RSS: 185.8 MB

  • Total time: 57.2s

CPU usage over time

CPU usage during test execution for contour.

RSS memory over time

RSS memory usage during test execution for contour.

Duration comparison

Test duration for contour compared to all other terminals.

CPU % vs Duration

CPU % vs duration trade-off for contour.