Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Seminář z TeXu
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
Seminář z TeXu
Commits
e88e6b42
Commit
e88e6b42
authored
2 years ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Tahak o Unicode
parent
6d660309
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
unicode/tahak.txt
+160
-0
160 additions, 0 deletions
unicode/tahak.txt
with
160 additions
and
0 deletions
unicode/tahak.txt
0 → 100644
+
160
−
0
View file @
e88e6b42
Unicode
=======
Historie: 5 -> 6 -> 7 -> 8 -> 16 -> 16+ bitů na znak
Odkazy na Unicode 13.0.0: [s1] -> stránka standardu, [x01] -> example z code charts
- snaží se reprezentovat znaky všech světových abeced
- reprezentuje znaky (sémantiku), nikoli glyfy (konkrétní grafickou podobu)
- snaží se o vztah 1:1 se všemi používanými kódováními => nesystematičnosti
- též standardizováno jako ISO 10646
### Codepointy ###
- prostor velikosti 17 x 2^16 = 1114112
- v Unicode 15.0 obsazeno cca 149k codepointů
- 0000-007f: ASCII včetně řídicích znaků [x00]
- 0080-00ff: iso-8859-1 včetně řídicích znaků [x02]
- rozšířená latinka 1 [x05]
- pre-komponované znaky s diakritikou
- 0130, 0131: turecká i (locale-dependent vztah velké<->malé)
- rozšířená latinka 2 [x06]
- podivná písmena používaná třeba v afrických jazycích
- 01C4-01C7: chorvatské dvojznaky (rozlišení uppercase/lowercase/titlecase)
- fonetická abeceda (IPA) [x09]
- řečtina a koptština [x20]
- nejrůznější varianty cyrilice [x25]
- hlaholice [x26]
- gruzínština [x30]
- futhark [x32]
- egyptské hieroglyfy [x33]
- CJK = unifikovaná čínština + japonština + korejština [e.g. x35]
- disk z Faistu [x37]
- kombinující diakritika [x40]
- výjimky pro i, j [s318]
- obecně může být shaping složitý [s83]
- všelijaká interpunkce [x41]
- mezery různých šířek [s290]
- zero-width (no)breaking space
- word joiner (na tomto místě se nesmí zlomit řádek)
- zero-width (non-)joiner (týká se ligatur)
- různé pomlčky [s292]
- soft hyphen
- uvozovky [s295]
- symboly
- šipky [x50]
- technické symboly [x51]
- všehochuť [x52, x53]
- skládačka rámečků [x55]
- emotikony [x58] (z toho se později vyvinulo emoji)
- speciální notace
- hudební [x60]
- Braille [x62]
- domino [x63]
- šachy [x52, x64]
- karty [x65]
- math
- matematické symboly [x70, x71, x72]
- letter-like symboly [x73]
- šipečky [např. x74]
- matematické varianty [x75]
- 2063 invisible separator (třeba v M_{ij})
- 2062 invisible times (neznačené násobení)
- 2064 invisible plus (třeba v "1 3/4")
- zpětná kompatibilita
- pre-komponované znaky
- zlomky a římská čísla [x81]
- ligatury [x83]
- mnoho konců řádků: 000D CR, 000A LF, CR+LF, 0085 NEL,
2028 line separator, 2029 paragraph separator
- private-use oblasti: E000-F8FF, F0000-FFFFD, 100000-10FFFD
- neoficiální registr privátních znaků (třeba klingonština)
- non-characters
- FFF9, FFFA, FFFB: inter-lineární anotace [s938]
- FFFC: object replacement characters (sem se vloží objekt dodaný OOB)
- FFFD: replacement character
- FFFE není definováno, FEFF je zero-width no-break space (BOM)
- variation sequences
- FE00-FE0F: selektor grafické varianty
- UCD/StandardizedVariants.txt
- také se používají pro emoji
- embedded tags
- E0000-E007F je kopie ASCII používaná k tagování + introducers + cancel tag
- language tagy (deprecated)
- také se používají pro emoji
### Reprezentace ###
- UCS-2
- historické: pouze 2^16 codepointů
- BE+LE varianta, potřebuje BOM (standard říká, že bez BOM je to BE)
- UCS-4 alias UTF-32 (BE+LE varianta)
- UTF-16
- reprezentace všech codepointů pomocí 16bitových kódů
- surrogates: D800-DBFF high, DC00-DFFF low
- UTF-8
- nadmnožina ASCII, ostatní znaky mají 2 až 4 byty
- podmínky na normalizaci: <0x110000, nejkratší kód
- neoficiální rozšíření na 64-bitová čísla (Perl5)
- samosynchronizující, zachovává lexikografické pořadí
- nešvar s BOM
- UTF-7, Punycode a další
### Tabulky vlastností ###
- UnicodeData.txt:
- jméno
- general category [s199]
- způsob zobrazování (např. směr psaní)
- upper/lower/titlecase mappings
- numerická hodnota
- dekompozice (normální a <compat>)
- canonical combining class
- PropList.txt: další binární vlastnosti
- NamesList.txt: alternativní jména (též pokud kanonické jméno obsahuje překlep)
- Scripts.txt: ke kterému písmu co patří
- SpecialCasing.txt: výjimky z case-folding algoritmů
### Normální formy ###
- kanonická dekompozice (NFD)
- akcenty uspořádány podle combining class
- v rámci combining class pořadí zachováno
- kanonická kompozice (NFC)
- používáme pre-komponované znaky, kdekoliv možno
- kompatibilní (de)kompozice (NFKD, NFKC)
- standard slibuje stabilitu normálních forem
### Problémy ###
- kódování znaků není jednoznačné (rozložené vs. složené znaky),
je nutné pečlivě normalizovat => problémy s bezpečností, s filesystémy
- podobné problémy s UTF-8 / UTF-16, pokud se dekóduje ledabyle
- stejně vypadající znaky => phishing
### Emoji ###
- <JP: e (obrázek) + moji (znak)
- "obrázkové" codepointy s variation selectorem:
- VS16 = emoji (barevné)
- VS15 = text (černobílé)
https://emojipedia.org/
-> "czechia" - flag sequences
-> "ch-zh" - tag sequences (momentálně jen pro vlajky regionů)
-> "person running" - univerzální
-> "man running" - person running + ZWJ + male sign
-> combining skin tone modifiers
-> ZWJ + hair color
-> "black cat" - cat + ZWJ + black square
-> "astronaut" - person + ZWJ + rocket
-> "polar bear" - bear + ZWJ + snowflake
-> "family" - složitější konstrukce se ZWJ
-> "roger" - pirate flag = blackflag + ZWJ + skull and crossbones
### Odkazy ###
https://shapecatcher.com/
https://r12a.github.io/uniview/
https://notofonts.github.io/
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment