Troika: ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์“ฐ๋Š” ํ…์ŠคํŠธ ๋ ˆ์ด์•„์›ƒ ์ง€์›

์— ๋งŒ๋“  2021๋…„ 04์›” 05์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: protectwise/troika

์™„์ „ํ•œ ๊ณ ๊ธ‰ ํ…์ŠคํŠธ ์…ฐ์ดํ•‘ ์†”๋ฃจ์…˜(์˜ˆ: harfbuzz.wasm) ๋Œ€์‹  RTL ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ฆ‰์‹œ ์ง€์›์„ ์›ํ•ฉ๋‹ˆ๋‹ค. Typr์€ ์ด๋ฏธ ์•„๋ž์–ด ๊ธ€๋ฆฌํ”„ ๋Œ€์ฒด์— ๋Œ€ํ•œ ์–ด๋Š ์ •๋„ ์ง€์›์„ ํฌํ•จํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์™„์ „ํ•œ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ RTL ๋ ˆ์ด์•„์›ƒ/๋ž˜ํ•‘ ๋กœ์ง์„ ์ด๋ฏธ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฒ„๊ทธ ๋ฐ ๊ธฐํƒ€ ์ง€์› ๊ฒฉ์ฐจ๋ฅผ ์ถ”์ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž„์‹œ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€: https://troika-examples.netlify.app/#text -rtl

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์กฐ์ธ ์œ ํ˜• ๊ฐ์ง€์˜ ๋” ์™„์ „ํ•œ ๊ตฌํ˜„์„ ์ถ”์ง„ํ–ˆ์Šต๋‹ˆ๋‹ค. Opentype.js์—์„œ ์ฑ„ํƒํ•œ ๋…ผ๋ฆฌ๋Š” ๋ถˆ์™„์ „ํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ตฌํ˜„์€ ์‹ค์ œ๋กœ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฒฐํ•ฉ ์œ ํ˜• ์ •์˜ ์˜ ๊ณ ๋„๋กœ ์••์ถ•๋œ ๋ฒ„์ „์„ ํฌํ•จํ•˜๋ฏ€๋กœ ์ด์ œ ์•„๋ž์–ด ๋ฐ ๊ธฐํƒ€ ์–ธ์–ด๋กœ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Typr ์ฝ”๋“œ๋ณด๋‹ค ์ ์ ˆํ•œ ์†๋„ ๋ฒ”ํ”„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@MichaelHazani ํžˆ๋ธŒ๋ฆฌ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ž์›ํ•˜์…จ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๊ธ€๊ผด" ๋“œ๋กญ๋‹ค์šด์— ๋ช‡ ๊ฐ€์ง€ ํžˆ๋ธŒ๋ฆฌ์–ด ๊ธ€๊ผด์„ ์ถ”๊ฐ€ํ•œ ์ด ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž์‹ ์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

๋ชจ๋“  11 ๋Œ“๊ธ€

๋จผ์ € ์ด ์ž‘์—…์— ๋Œ€ํ•ด ๊นŠ์€ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์•„๋ž์–ด ๋ฐ RTL ๋ ˆ์ด์•„์›ƒ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ์•„๋ž์–ด ํ…์ŠคํŠธ๋Š” ๋Œ€๋ถ€๋ถ„ ์นด์ด๋กœ, Lemonada, Scheherazade ๊ธ€๊ผด(Tachkil ์—†์Œ)์—์„œ ์ž˜ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„๋ž์–ด์— ๋Œ€ํ•ด ๋‹ค์Œ 2๊ฐ€์ง€ ๊ทœ์น™์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. 3๊ฐ€์ง€ ํ˜•ํƒœ์˜ ๊ธ€์ž๊ฐ€ ๊ดœ์ฐฎ์€์ง€(์ฒ˜์Œ, ์ค‘๊ฐ„, ๋)๊ณผ ์—ฐ๊ฒฐ(ํ•ฉ์ž).
  2. ู ูŽ ู‹ ูŒ ๋ฐœ์Œ ํ‘œ์‹œ์˜ ์ง‘ํ•ฉ์ธ Tachkil (๋“œ๋ฌธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)

mirza์—์„œ ์ผ๋ถ€ ๋‚ด๋ถ€ ๋ฌธ์ž๊ฐ€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Œ(๋ฌธ์ž์˜ ๋ ํ˜•ํƒœ๊ฐ€ ๋‚ด๋ถ€ ๋ฌธ์ž ๋Œ€์‹  ์‚ฝ์ž…๋˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Œ)
arabicTachkil

tachkil์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ถ€ ๊ธ€๊ผด์€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ˜๋ฉด ๋‹ค๋ฅธ ๊ธ€๊ผด์€ ์˜†์— ์žˆ๋Š” ๋ฌธ์ž์˜ ํ˜•ํƒœ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” ๋‚ด๊ฐ€ ์ƒ์ž์— ์“ด ํ…์ŠคํŠธ๋กœ ์ž‘์—…ํ–ˆ์ง€๋งŒ ๋ณต์‚ฌํ•œ ํ…์ŠคํŠธ๋กœ๋Š” ์ž‘์—…ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ด„ํ˜ธ "(", ")"์™€ ๊ฐ™์€ ๋น„ ์•„๋ž์–ด ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค(๋ฐ˜์ „ํ•ด์•ผ ํ•จ).

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋น ๋ฅธ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์ƒํ™ฉ์ด ์ด์ƒํ•ด์ง€๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ธ€๊ผด๋„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ธ€๊ผด์€ ํ•„์š”ํ•œ ๋ฌธ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

์ข‹์•„์š”, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์‹œ์ž‘์ด ์ˆœ์กฐ๋กญ๋‹ค๋‹ˆ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๋‹จ์–ด ์œ„์น˜ ๋Œ€์ฒด์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๊ธ€๊ผด์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. Typr์˜ ๋‹จ์–ด ์œ„์น˜ ๊ฐ์ง€ ๋…ผ๋ฆฌ ๋Š” ํ•ญ์ƒ ๋™์ผํ•˜๋ฏ€๋กœ ํ•ด๋‹น ๊ธ€๊ผด์ด Typr์ด ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋Œ€์ฒด๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ์‹์— ๋ญ”๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ Mirza๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ž๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ‹€๋ฆฐ์ง€๋ฅผ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ ๋‹จ์–ด๋กœ ์˜ˆ์ƒ๋˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋œ ์ผ๋ถ€ ๋Œ€์ƒ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋Œ€๋‹จํžˆ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ ํ…์ŠคํŠธ: xxx
๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. [์ด๋ฏธ์ง€]
๊ธ€๊ผด A์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. [์ด๋ฏธ์ง€]
๊ธ€๊ผด B์—์„œ ์ž˜๋ชป๋œ ๋ชจ์–‘: [์ด๋ฏธ์ง€]

๊ด„ํ˜ธ์— ๊ด€ํ•ด์„œ๋Š” ๊ทธ๊ฒƒ์ด Bidi ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ Paired Brackets ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ˜ผ์ž์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„์ง€๋Š” ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ํ™•์‹คํžˆ ์กฐ์‚ฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ€๋žต์ ์ธ ์–‘๋ฐฉํ–ฅ ๋ ˆ์ด์•„์›ƒ ์ง€์›์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ฐฉํ–ฅ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด LRO/RLO/PDF ์ œ์–ด ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆœ์ „ํžˆ ์ˆ˜๋™์ž…๋‹ˆ๋‹ค. ์™„์ „ ์ž๋™ bidi๋Š” ํ›จ์”ฌ ๋” ๋ณต์žกํ•˜๊ณ  ์—ฌ์ „ํžˆ ๋ฒ”์œ„๋ฅผ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ์ง€๋งŒ ๋ฒ”์œ„๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ(๋ผ์ธ ๋ž˜ํ•‘ ๋ฐ ์„ ํƒ ํฌํ•จ!)์€ ์ค‘์š”ํ•œ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.

image

์–ด์ œ ํ”ผ๋“œ๋ฐฑ์„ ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•ด์„œ ์ •๋ง ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ง์— ์ „์ฒด ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณผ ์ƒ๊ฐ์ด์—ˆ์ง€๋งŒ ๋‹จ๊ณ„์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ธ€๊ผด๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ ๊ธ€๊ผด์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ). ์ €๋Š” Scheherazade ๊ธ€๊ผด์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ Cairo์™€ Lemonada๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Mirza ๋ฐ Amiri ๊ธ€๊ผด์€ ํ•ญ์ƒ ์—ฐ๊ฒฐ์ด ๋Š๊ธด ๋ฌธ์ž๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
Noto Sans, Roboto ๊ธ€๊ผด์ด ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ๋นจ๊ฐ„์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž˜๋ชป๋œ ํ˜•ํƒœ์˜ ๊ธ€์ž๋ฅผ ์˜๋ฏธํ•˜๊ณ  ๋…น์ƒ‰์ด ์˜ฌ๋ฐ”๋ฅธ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” Tachkil(์„ฑ์•… ์Œํ‘œ) ๋˜๋Š” ๋ผํ‹ด์–ด ๋˜๋Š” ์ˆซ์ž ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

  1. ์ตœ์ข… ํ˜•์‹ ๋Œ€์‹  ๋‚ด๋ถ€ ํ˜•์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹จ์–ด ๋‚ด๋ถ€์— ์‹œ์ž‘ ํ˜•์‹ ๋Œ€์‹  ๋‚ด๋ถ€ ํ˜•์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. (๋‹จ์–ด ๋‚ด์—์„œ ์ผ๋ถ€ ๋ฌธ์ž์—๋Š” ํ•ฉ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค)
  3. ๋‹จ์–ด ๋ฐ”๋กœ ๋’ค์— ์ˆซ์ž๊ฐ€ ์žˆ์œผ๋ฉด (ูƒู…2) ๋ ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ˆซ์ž๊ฐ€ ๋ฐ˜์ „๋ฉ๋‹ˆ๋‹ค.

arabThree

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ํ…์ŠคํŠธ:
2.
2
ุจูุณู… ุงู„ู„ูŽู‘ู‡ ุงู„ุฑุญู…ู† ุงู„ุฑุญูŠู…
ุจูุณู…ู ุงู„ู„ูŽู‘ู‡ู ุงู„ุฑูŽู‘ุญู…ูฐู†ู ุงู„ุฑูŽู‘ุญูŠู…ู

์ด ๋‹ต๋ณ€์—๋Š” ๊ธ€์ž๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ทธ๋ฆผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://www.quora.com/How-can-anyone-read-Arabic-as-the-letters-are-all-connected-to-each-other/answer/Hashem-Mohamed-4

์ด ๋งˆํฌ์—…๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค!!! ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ๋ฌผ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ •๋ง ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋‹จ์–ด ์œ„์น˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” Typr์˜ ๋…ผ๋ฆฌ๋Š” ํ™•์‹คํžˆ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ opentype.js ์—์„œ ์ฑ„ํƒํ•œ ๋กœ์ง์œผ๋กœ ์žฌ์ •์˜ํ–ˆ๊ณ  ๊ฒฐ๊ณผ๋Š” ์ด์ œ ํ›จ์”ฌ ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

image

์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ํ›„ ํ•ด๋‹น Typr ์ˆ˜์ • ์‚ฌํ•ญ์„ ์—…์ŠคํŠธ๋ฆผ์— ๋‹ค์‹œ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

"์ˆซ์ž๊ฐ€ ๋ฐ˜์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค" ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ์‹œ์ž‘ํ•œ BiDi ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ช…์‹œ์  LRO/PDF ๋ฌธ์ž๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๊ณ„์† ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค! ๐Ÿคฉ

๊ทธ๊ฒƒ์€ ๋นจ๋ž๋‹ค.
๊ธ€์Ž„, ๋‚˜๋Š” ๋‹น์‹ ์ด ์–ธ๊ธ‰ํ•œ BiDi ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ(์ˆซ์ž์™€ ๊ด„ํ˜ธ๋Š” ์•„๋ž์–ด ํ…์ŠคํŠธ์™€ ํ•จ๊ป˜ ๋„๋ฆฌ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ)์„ ์ œ์™ธํ•˜๊ณ  ๋” ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
LRO/PDF ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ˜ผํ•ฉ ํ…์ŠคํŠธ ์˜ˆ์ œ๋ฅผ ์ง์ ‘ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž์–ด ํ…์ŠคํŠธ์™€ ๊ด€๋ จ์ด ์—†์ง€๋งŒ SDF ๋ Œ๋”๋ง๊ณผ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๋งˆ์ง€๋ง‰ ์‚ฌํ•ญ์€ ์—ฌ๊ธฐ์™€ ๊ฐ™์ด 2๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ํ•จ๊ป˜ ์—ฐ๊ฒฐ๋  ๋•Œ ์ผ๋ถ€ ๋ฌธ์ž์˜ ๋‚ด๋ถ€๊ฐ€ ๊ฒ€์€์ƒ‰์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
image
image
๋•Œ๋กœ๋Š” ๊ฐ™์€ ์บ๋ฆญํ„ฐ ๋‚ด์—์„œ
image
์ด๊ฒƒ์€ Lemonda ๊ธ€๊ผด์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Scheherazade, Cairo๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์บ๋ฆญํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Œ).
(๋ฒกํ„ฐ ๋ Œ๋”๋ง ๋„๊ตฌ์˜ ๋ถ€์šธ ์—ฐ์‚ฐ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.)

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”! ๋‚˜๋Š” ํ˜„์žฌ ๋‹น์‹ ์ด ์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์™„์ „ํ•œ bidi ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์˜ ๋“œ๋กญ๋‹ค์šด์— ์žˆ๋Š” "BiDi 1" ํ…์ŠคํŠธ์—๋Š” LRO/PDF์˜ ์˜ˆ๊ฐ€ ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‹จ์ง€ ์ž„์‹œ๋ฐฉํŽธ์ผ ๋ฟ์ด๊ณ  ์‹ค์ œ๋กœ ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง„์ •ํ•œ ๋น„๋””๊ฐ€ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ธ€๊ผด์˜ ๋ถ€์šธ ์ฑ„์šฐ๊ธฐ ๋ฌธ์ œ๋Š” #57์—์„œ ๋…ผ์˜ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์ œ ์™„์ „ํ•œ bidi ์ง€์›์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค!

image

์˜ˆ์ œ ํŽ˜์ด์ง€์—๋Š” ๋ช‡ ๊ฐœ์˜ bidi ์Šค๋‹ˆํŽซ์ด ์žˆ์ง€๋งŒ ๊ณ ์œ ํ•œ rtl+ltr ํ˜ผํ•ฉ ํ…์ŠคํŠธ๋กœ ํ…Œ์ŠคํŠธํ•ด ๋ณด์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ํ† ๋ผ๊ตด๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์ „ํ˜•์ ์ธ ์˜ˆ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ JS bidi ๊ตฌํ˜„์„ ์ฐพ์ง€ ๋ชปํ–ˆ๊ณ  fribidi.wasm์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด JS ๊ตฌํ˜„์„ ์•ผ๊ฐ„ ๋ฐ ์ฃผ๋ง ํ”„๋กœ์ ํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/lojjic/bidi-js๋ฅผ ๋ณด์‹ญ์‹œ์˜ค! ๊ฑฐ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ณต์‹ bidi ํ…Œ์ŠคํŠธ์— ๋”ฐ๋ผ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜๋ฉฐ(~10kb) ๊ฝค ์ž‘๊ณ  ์†๋„๊ฐ€ ๋” ๋น ๋ฅด์ง€๋งŒ ์•„๋งˆ๋„ ๋” ์ตœ์ ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ์†”๋ฃจ์…˜๊ณผ ๊ทธ๊ฒƒ์ด ๋ฒˆ๋“ค ํฌ๊ธฐ์— ์–ผ๋งˆ๋‚˜ ์ ์€ ์–‘๋งŒ ์ถ”๊ฐ€๋˜๋Š”์ง€์— ๋Œ€ํ•ด ์ •๋ง ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด์ œ ์™„์ „ํ•œ RTL ์ง€์›์— ๋งค์šฐ ๊ทผ์ ‘ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐํ•ฉ ์–‘์‹ ๋…ผ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜์ง€๋งŒ opentype.js์—์„œ ์ฑ„ํƒํ•œ ๋…ผ๋ฆฌ๊ฐ€ ์•„๋ž์–ด ์Šคํฌ๋ฆฝํŠธ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐํ•ฉ๋„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค๋ฅธ ๋…ผ๋ฆฌ๋Š” ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

์กฐ์ธ ์œ ํ˜• ๊ฐ์ง€์˜ ๋” ์™„์ „ํ•œ ๊ตฌํ˜„์„ ์ถ”์ง„ํ–ˆ์Šต๋‹ˆ๋‹ค. Opentype.js์—์„œ ์ฑ„ํƒํ•œ ๋…ผ๋ฆฌ๋Š” ๋ถˆ์™„์ „ํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ตฌํ˜„์€ ์‹ค์ œ๋กœ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฒฐํ•ฉ ์œ ํ˜• ์ •์˜ ์˜ ๊ณ ๋„๋กœ ์••์ถ•๋œ ๋ฒ„์ „์„ ํฌํ•จํ•˜๋ฏ€๋กœ ์ด์ œ ์•„๋ž์–ด ๋ฐ ๊ธฐํƒ€ ์–ธ์–ด๋กœ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Typr ์ฝ”๋“œ๋ณด๋‹ค ์ ์ ˆํ•œ ์†๋„ ๋ฒ”ํ”„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@MichaelHazani ํžˆ๋ธŒ๋ฆฌ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ž์›ํ•˜์…จ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๊ธ€๊ผด" ๋“œ๋กญ๋‹ค์šด์— ๋ช‡ ๊ฐ€์ง€ ํžˆ๋ธŒ๋ฆฌ์–ด ๊ธ€๊ผด์„ ์ถ”๊ฐ€ํ•œ ์ด ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž์‹ ์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

์ข‹์•„ ๋ณด์ธ๋‹ค!
("๊ธ€์Ž„์š”, ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ตฌ๋‘์ ์€ ์žˆ์–ด์•ผ ํ•  ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ์ด ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‘ ๊ธ€๊ผด ๋ชจ๋‘ ํžˆ๋ธŒ๋ฆฌ์–ด๋ฅผ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜์–ด, ์ฆ‰ ์ด ๋‹จ์–ด๋กœ ์ „ํ™˜ํ•ด๋„ ์ •๋ ฌ์ด ๊นจ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž˜ ํ–ˆ์–ด!")
image

์—ฌ๊ธฐ๊นŒ์ง€ ์ž‘์—…ํ•œ v0.41.0์„ ๋ฆด๋ฆฌ์Šคํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ์ถ”๊ฐ€๋กœ ์ „๋ฌธํ™”๋œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋‹ค๋ฅธ RTL ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์ง€๋งŒ ์ด๋Š” ์‚ฌ๋ก€๋ณ„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ๊ฒฌ๊ณ ํ•œ ๊ธฐ์ค€์„ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ข€ ๋” ๊ณ ๊ธ‰/๋ถˆ๋ถ„๋ช…ํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์„ ํƒ์  Harfbuzz ํ”Œ๋Ÿฌ๊ทธ์ธ(#91)์„ ํ—ˆ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํ•ญ์ƒ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์ค‘ํ•œ ๋„์›€์„ ์ฃผ์‹  @boulabiar ์™€ @MichaelHazani ์—๊ฒŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!!! ๐ŸŽ‰

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰