2014-04-24 2 views

답변

0

모든 문자가 같은 글꼴 (히브리어 또는 라틴어)을 사용하는 텍스트 범위를 작성하려면 IDWriteFont::HasCharacter 전화가 왔습니다.

해당 텍스트 범위에 히브리어 글꼴을 사용하는 경우 글꼴 크기를 늘리려면 textLayout->SetFontSize을 호출합니다.

이것은 폰트 콜백 DirectWrite이 할 것으로 예상하는데, 이것은 자동이며 사용자 정의 할 수 없습니다.

+1

그 방법은 작동합니다. (그리고 아마도 U + FE00..FE0F와 같은 변형 셀렉터를 건너 뛸 수도 있습니다.) 참고 Windows 8.1의 IDWriteTextLayout은 IDWriteFontFallback을 통해 글꼴 대체의 사용자 지정을 지원하고, IDWriteFontFallbackBuilder를 만들고, 히브리어 유니 코드 범위로 AddMapping을 호출하고, 시스템 글꼴로 AddMappings를 호출합니다 컬렉션을 모두 캐치 (catch all) 한 다음 레이아웃에서 SetFontFallback을 사용합니다. –

1

CreateTextFormat을 사용하여 IDWriteTextFormat을 만들면 첫 번째 매개 변수에 글꼴 패밀리 이름을 전달할 수 있으며 여섯 번째 매개 변수에서 글꼴 크기를 변경할 수 있습니다.

CreateTextFormat 매개 변수는 MSDN에서 가져올 수 있습니다.

Here은 Microsoft Windows 글꼴 군의 목록으로, 라틴어와 히브리어로 된 글꼴을 찾을 수 있습니다.

+0

글쎄, 내가 아는 한, 문제는 CreateTextLayout에 전달하는 긴 텍스트 문자열이 "Hello שלום Hello שלום"와 같이 라틴어와 컴플렉스 (히브리어) 문자를 모두 갖고 있으며 고유 한 textLayout-> Draw 호출을 원한다는 것입니다. 하나의 글꼴/글꼴 크기와 히브리어 문자로 그 문자열의 라틴 문자를 그릴 수 있습니다. – BanK

+0

@BanK 다른 사람이 직접 작성한 direct2d에 익숙하지 않습니다. – Caesar

+0

OK, 어떤 식 으로든 히브리어와 영어를 혼용 할 수있는 사용자가 텍스트를 입력합니다. 나는 폰트 폴백 (font fallback quirk)이 있다고 생각한다. 사용하고자하는 글꼴은 히브리어 문자 (1234567890 및() [] ' "등)를 가지고 있으며 일반 글꼴보다 동일한 글꼴 크기에 비해 훨씬 작다. 라틴 문자에 대한 표준 글꼴로, 그래서 히브리어 문자는 라틴 문자에 비해 작고 읽을 수 없습니다. 나는 대체 글꼴의 경우에 다른 글꼴 크기를 사용하도록 DirectWrite에게 말하고 싶습니다. – BanK

관련 문제