인쇄 스타일 (작은 대문자 나 스크립트 등)을 시뮬레이션하기 위해 유니 코드 문자를 사용해서는 안되는 이유는 무엇입니까?


129

유니 코드에는 기본 라틴 알파벳 문자의 활자체 형태의 변형체처럼 보이는 다양한 문자가 포함되어 있으며 마크 업 또는 이와 유사한 방식으로 텍스트를 해당하는 활자체 스타일로 텍스트를 작성할 수 있습니다. 예를 들어, 다음을 시뮬레이션 할 수 있습니다.

  • 작은 모자들:

    ʙᴇʜᴏʟᴅ ᴛʜɪꜱ ꜰᴀɴᴄɪʟy ᴇɴᴄᴏᴅᴇᴅ ᴛᴇxᴛ.

  • 스크립트:

    𝓑𝓮𝓱𝓸𝓵𝓭 𝓽𝓱𝓲𝓼 𝓯𝓪𝓷𝓬𝓲𝓵𝔂 𝓮𝓷𝓬𝓸𝓭𝓮𝓭 𝓽𝓮𝔁𝓽.

  • 블랙 레터 :

    𝕭𝖊𝖍𝖔𝖑𝖉 𝖙𝖍𝖎𝖘 𝖋𝖆𝖓𝖈𝖎𝖑𝖞 𝖊𝖓𝖈𝖔𝖉𝖊𝖉 𝖙𝖊𝖝𝖙.

이는 Stack Exchange (예 : here , here 및 here )에 대한 관심을 충족 시켰으며 이러한 기술에 대한 비판을 받았습니다. 그러나 내가 그들을 사용할 때 무엇이 ​​잘못 될 수 있습니까?


224
내 휴대폰에서이 글을 읽고 있는데 마지막 두 개의 멋진 텍스트를 볼 수 없습니다.
— Scimonster

22
그것은 일부 장치에서 읽을 수 있기 때문에 : i.stack.imgur.com/kM73J.png
— 크리스 켄트

15
우리 중 일부는 읽을 수있는 글꼴 (및 크기, 색상 및 & C)로 간주되는 웹 페이지를보고 싶어하므로 사용자 CSS 스타일 시트를 사용하여 작성자 스타일을 대체합니다. 세 가지 예제가 내 장치에 표시 되더라도 분명히 표시하려는 것처럼 테두리를 읽을 수만 있습니다. 왜 당신의 예술적 갈망을 독자의 읽기 편이성 위에 놓을 것입니까?
— jamesqf

38
흥미로운 사실은 다음과 같습니다. Edge는 후자의 두 샘플에서 텍스트를 찾을 수 없으며 Chrome은 첫 번째 샘플에서 텍스트를 찾을 수 없습니다. (두 브라우저에서 Ctrl + F '를 BEHOLD로 시도하십시오.) Firefox를 확인하지 않았습니다.
— Schism

22
@Schism Firefox는 그중 아무것도 찾지 못합니다. Chrome은 아마도 검색하기 전에 NFKC / NFKD 정규화를 사용하는 것처럼 보이며, 이는 스크립트와 블랙 레터 텍스트를 기본 라틴어로 분해합니다. Firefox는 그렇게하지 않는 것 같습니다. Edge .. 뭔가 이상한 일을하고 있습니다.
— Bob

답변:


224

일반

이러한 문자는 일반 라틴-알파벳 텍스트를위한 것이 아니라 발음 기호, 키릴-알파벳 텍스트, 수학 기호 (변수를 나타냄) 등으로 사용하기위한 것입니다. 기본 라틴 알파벳으로 텍스트를 인코딩하는 유일한 유니 코드 호환 방법은이 목적으로 주로 사용되는 문자를 사용하는 것입니다 (예 : 기본 라틴 유니 코드 블록에서).

다른 많은 표준과 마찬가지로 유니 코드 위반에 대해 두 번 생각해야합니다. 또한, 유니 코드는 많은 쓰기 시스템, 사용 사례, 그냥 다른 표준과의 호환성을 위해 존재 물건을 구비 한 완전하게 모든 동기를 이해하는 것은 자신의 과학이다. 간단히 말해, 실제로하고있는 일을 실제로 알지 않는 한, 원격으로 생각조차하지 않은 무언가가 깨질 가능성이 큽니다.

구체적인 예

접근성

인코딩 된 텍스트는 일부 글꼴로만 렌더링되는 것은 아닙니다. 예를 들어 스크린 리더로 해석 할 수도 있습니다. 스크린 리더는 다음을 추측 할 필요가 없습니다.

𝓽𝓱𝓮

은 변수 𝓽, 𝓱 및 𝓮 의 정관사 나 수학 곱 2 를 의미합니다. 이러한 문자는 이러한 문자의 용도입니다. 따라서 가장 좋은 동작은 문자 그대로 다음과 같은 문자를 나타내는 것입니다.

굵은 스크립트 작은 t, 굵은 스크립트 작은 h, 굵은 스크립트 작은 e

대신 "the"라고 말해서는 안됩니다. 왜냐하면 발음하기 쉬운 단어를 형성하는 기호가있는 수학 텍스트를 제대로 읽지 못하기 때문입니다. 삼

이식성

텍스트가 컴퓨터에서 제대로 렌더링되었다고해서 독자의 텍스트에도 해당되는 것은 아닙니다. 가장 분명한 예는 독자에게 이러한 문자를 지원하는 글꼴이 없거나 대체 글꼴을 지원하지 않는 소프트웨어로 텍스트가 렌더링된다는 것입니다. 분명히, 이것은 점점 덜 일반화되고 있습니다. 난독증과 같은 일부 사람들은 이러한 문자를 지원할 가능성이 적은 특수 글꼴이 필요하다는 점을 명심하십시오.

그러나 독자의 기기가 다른 글꼴 만 사용하더라도 텍스트를 읽기 어렵게 만들 수 있습니다. A의 첫 번째 예 , 이것은 𝓉𝒽ℯ 개의 상이한 폰트 렌더링된다 :

Se FreeSerif 및 STIX로 렌더링

Free Serif는 특수 문자를 사용하여 텍스트를 시뮬레이션 할 때, 즉 연속적인 획으로 필기를 시뮬레이션 할 때 원하는대로 텍스트를 렌더링합니다. 그러나 이러한 문자는 수학 기호로 사용하기 위해 만들어 졌으므로 연결이 의미가 없습니다. 따라서 수학 목적으로 특별히 설계된 STIX 의 렌더링 은 이러한 문자의 사용 방법과 더 일치합니다.

A의 두 번째 예를 들어 , 당신이 또는 어떤 이유로 독자 italicise "сᴜт мy вᴀʀ"을 가정합니다. 좋은 글꼴을 사용하면 4가됩니다 .

сᴜт мy вᴀʀ는 똑바로 기울임 꼴로 렌더링되었습니다.  기울임 꼴은 "cum my bar"로 읽습니다.

그 이유는 작은 대문자가 키릴 문자로 (부분적으로) 시뮬레이트되었으며 키릴 이탤릭체는 때로는 직립 문자 와 매우 다르게 보입니다 . 다시 말하지만, 이것은 올바른 행동입니다.

검색 가능성

A와 첫 번째 예, 당신이 적당한 검색 문자 𝒲 (수학 스크립트로 할 수있는 것이 무엇 고려 W ). 검색에 기본 모드 와 정확한 모드 (대개 대소 문자 구분 )의 두 가지 모드가 있다고 가정하십시오 . 이 문자는 다음과 같아야합니다.

  • 기본 모드에서 w 또는 W 를 검색 할 때 발견됨 – 특수 문자를 검색 필드에 입력하거나 복사하여 붙여 넣기를 원하지 않는 사람들을 위해;

  • 정확한 모드에서 𝒲을 검색 할 때 발견됨 – 수학적 문서에서 해당 변수가 언급 된 곳을 검색하고자하는 사람들을 위해;

  • 위와 유사한 검색을 중단하여 정확한 모드에서 𝓌, w 또는 W 를 검색 할 때는 찾을 수 없습니다 .

그러나이 문자를 사용하여 일반 텍스트를 시뮬레이션 하는 경우 위와 충돌하는 정확한 모드에서 W 또는 𝒲을 검색 할 때이 문자를 찾아야합니다.

A와 두 번째 예를 라틴 문자와 그 반대를 검색 할 때 키릴 문자가 그들이 완전히 다른 것들로, 발견되지 않을 것을 고려하십시오. 그러나 키릴 문자를 사용하여 라틴어 작은 대문자를 시뮬레이션하는 경우 검색 기능을 손상시키지 않으려면이 작업이 필요합니다. 이것은 사람들이 희귀 한 라틴어-알파벳 단어를 검색하면 인기있는 키릴-알파벳 단어의 가짜 작은 대문자에 해당하는 (그리고 그 반대의 경우) 많은 쓸모없는 것들을 찾게 할 것입니다.

정확한 검색 옵션은 알파벳의 다른 목적으로 예약되어 있으므로이 문제를 해결할 수 없습니다.

일반적으로 스타일이 지정된 라틴 텍스트를 시뮬레이트하기 위해 특수 문자를 사용하여 손상되지 않은 검색 옵션을 작성하는 것은 불가능합니다.


1 XKCD가 통일 표준의 실패에 대해  알고 있습니까? 글쎄, 유니 코드는 성공했다.
2  또는 빈 연산자가 관련 규칙에있는 것
3  오늘날 나는이 인코딩이나 그와 호환되는 것을 지원하는 수학 텍스트가 거의 없다는 것을 알고 있습니다. 유니 코드 악용 텍스트는 여전히 주변에있을 수 있습니다.
4  마케도니아 어 또는 세르비아어로 현지화하지 않는 한, 다르지만 여전히 원하지 않는 결과가 나타납니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
— Journeyman Geek

1
세 번째 예는 어떻습니까? 블랙 레터 텍스트가 유니 코드와 일부 글꼴로 존재하는 이유는 무엇입니까?
— posfan12

2
@ posfan12 : 스크립트 문자와 같이 고유 한 수학적 알파벳으로 사용됩니다. (여기서 번호 매기기 예제는 문제의 글 머리 기호와 관련이 없습니다.)
— Wrzlprmft

3
이탤릭체 때 다른 문장이되는 올바른 문장을 찾기 ... (두 말, 인간의 라틴어 기반의 독자들에 의해 해석) : 당신의 작은 공인 회계사의 예는 퍼즐 / competitoin 제안
— 하겐 폰 Eitzen

67

무엇이 잘못 될 수 있습니까? 글쎄, 나는 이것을 본다 :

여기에 이미지 설명을 입력하십시오

Windows 7의 Firefox 50.1.0에서

문제 글리프없는 휴대 기기,이 경우에는, 사용자가 소정의 이미지에 도시 된 상기 인 크리스 켄트 에 주석 I가 잘려에서 조정할 한 일본어 :

여기에 이미지 설명을 입력하십시오

그리고 사용자 oals 는 다른 예를 친절하게 기증했습니다 .

여기에 이미지 설명을 입력하십시오



7
@Lilienthal 업데이트를 확인하거나 설치하지 않고 몇 년을 지 났는지 감명 받았습니다. 내 말은, 나는 여전히 일부 장치에서 Firefox 3.5 기반의 것을 사용하고 있지만 문제에 대한 선택의 여지가 정확히 없습니다 (장치가 너무 좋지만 사용할 수있는 최신 브라우저는 없습니다)
— mtraceur

16
@Lilienthal 2020 년에 Firefox 주요 버전 번호에는 64 비트 번호가 필요할 수 있습니다. 그 직후 버전 번호는 실제 프로그램보다 더 많은 공간을 차지합니다. 시장 점유율을 되찾기 위해 Chrome 버전 번호를 저장하려면 행성 전체가 필요합니다.
— Andrew Morton

2
고대 브라우저를 사용하여 자신이 노출하고있는 알려진 보안 취약점이 몇 개나 될지 알고 있습니까?
— Zach Lipton

3
@Zach Lipton : 내 우선 순위 목록에서 그 방법을 알고 있습니까? # 1 실제로 사용할 수있는 것이 있습니다. 파이어 폭스 사람들 (그리고 다른 많은 사람들)은 새로운 패러다임을 받아 들였지만, 사용 불가능 성을 통한 보안.
— jamesqf

29

XY 문제가 있습니다.

Y와 X는 나머지 텍스트보다 작게 나타납니다.

여기에서 Y와 X는 나머지 텍스트보다 작게 나타납니다. 특정 확대 / 축소 수준에서는 크기가 같지만이 특정 글꼴의 특정 글리프에 문제가있는 것으로 보입니다.


나는 당신이보고있는 것에 대해 세 가지 가능한 설명을 제공 할 수 있습니다 : 1) 나쁜 힌트 . 2) 대체 글꼴은 x 와 y 를 제외한 모든 것에 사용됩니다 . 3) 잘못된 글꼴 디자인 : 작은 대문자는 소문자보다 약간 크게 설계되었으며 (유효한 선택 임) 음성 및 키릴 유니 코드 문자에 사용됩니다. 예를 들어 음성 학적 사용에서 이러한 문자는 적합하지 않습니다. 기본 라틴 문자와 조화를 이루어야합니다. — 어느 쪽이든 : 포인트 1)과 3)은 유니 코드 악용으로 인한 것이 아닙니다. 포인트 2)는 이미 다른 답변에서 해결되었습니다.
— Wrzlprmft 2016

12
@Wrzlprmft : 정의에 따르면 유니 코드에는 작은 대문자가 없으므로 유니 코드 남용입니다. 유니 코드의 특징은 발음 알파벳 블록과 라틴 확장 D 블록에서 작은 대문자처럼 보이는 문자입니다. 특히 두 음소 블록이나 라틴 확장 D 블록에는 작은 대문자 X 처럼 보이는 문자가 포함되어 있지 않으므로 X 는 어딘가에서 키릴 문자 블록에서 나온 것 같습니다. 차이는 1, 2 또는 3에 의해 발생하지 않습니다. 다른 알파벳에 속하는 문자로 인해 발생합니다.
— slebetman

@ slebetman : 작은 대문자 x 는 단지 소문자 x입니다 (질문에서 문자를 복사하고 직접 검사 할 수 있습니다). 또한 소문자 x 는 음성 문자로도 사용되므로 음성 문자와 조화를 이루어야합니다. 또한 키릴 자모 단어가 라틴어 텍스트에서 눈에 띄지 않게하기 위해 키릴 자모 소문자와 같은 높이를 가져야합니다.
— Wrzlprmft

19
"XY problem"에서 lol에 대한 찬성 :)
— Andrew Morton

13

라틴 문자와 비슷한 라틴 문자 이외의 문자를 사용하면 스패머, 포르노 애호가 및 텍스트를 검색 할 수없고 색인을 생성 할 수없고 번복 할 수있는 사람을 찾는 사람들을 스패머, 포르노 애호가의 회사에 배치 할 수 있습니다. ( "나는 그것이 안전하다고 결코 말하지 않았다! 나는 그것이 시그마-알파-적분 부호-에피 슬론이라고 말했다! 나를 고소 할 수 없다!")

당신이 그 클럽에 편하다면, 그것을 찾으십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.