조직 모드 테이블의 열을 일본어 글꼴로 정렬


12

고정 폭 글꼴을 사용하는 동일한 조직 모드 테이블에서 일본어와 영어를 혼합하려면 어떻게해야합니까? 다음과 같은 것 :

| mmmmmm | |
| は ど う 데 시우 | |
| ハ ー フ | ハ ー フ |

정렬되지 않습니다. 이맥스는 단순히 10 % 더 큰 일본어 문자를 하나로 간주합니다.

열 너비를 픽셀 단위로 설정할 수 있습니까? <10>은 너비를 설정하지만 고정 너비 문자로 계산되므로 도움이되지 않습니다.

문제는 기본적으로 emacs가 글꼴 너비를 사용하여 열을 정렬하는 방법입니다.


C-c C-c셀에있는 동안 테이블을 정렬하려고 했습니까 ? 방금 귀하의 예제를 org-mode 버퍼에 붙여 넣고 히트 C-c C-c하고 모든 것이 잘 정렬되었습니다.
elethan

이것은 아마도 org-mode에 추가해야 할 것입니다. gnu.org/software/emacs/manual/html_node/elisp/…에:align-to 설명 된 display 속성을 사용하여이 작업을 수행 할 수 있습니다 .
legoscia

@elethan : 그렇습니다. 일부 예제는 특정 서체 글꼴, 얼굴 크기 및 일부 일본어 텍스트 조합으로 작동합니다. Emacs는 위와 같이 예제를 정렬하려고 시도하고 때로는 올바르게 처리합니다. 그러나 이것은 단지 운이 좋은 문제입니다. 일반적으로 emacs는 이것을 눈이 멀다.
Quora Feans

이를 위해 고정 폭 글꼴이 필요하지 않습니까? 이 경우 stackoverflow.com/q/3758139/4050592에서 사용할 수있는 고정 폭의 일본어 글꼴이 있으면 도움이됩니다.
앤드류 스완

답변:


5

사용중인 글꼴에 따라 다릅니다. 그리고 Elisp에는 픽셀 레벨 정렬 기능이 없다고 생각합니다.

조직은 string-width대신에 너비를 계산 length합니다. string-widthASCII 및 반자 CJK 문자의 경우 1을, 전각 문자의 경우 2를 반환합니다. 다음 코드를 평가하면 다음을 알 수 있습니다.

(string-width "m")
1
(string-width "ハ")
1
(string-width "は")
2

이제는 Org 모드가 sting 속성에서 정답을 얻고 문자열 주위에 패드를 추가했지만 해당 비트가 화면에서 표시되는 위치는 Emacs 디스플레이 엔진의 작업입니다.

Emacs 디스플레이 엔진은 기본 OS에서 글꼴 정보를 가져옵니다. 복잡한 문제를 간단하게하기 위해 구성에서 m너비는 5 픽셀이고 "は"는 10이라고 가정합니다.이 경우 조직 모드의 가정 ( "は"은 너비의 두 배를 차지하기 때문에 " m ")는 화면의 실제 픽셀과 일치합니다.

대신 글꼴 구성에 "m"의 경우 7 픽셀, "は"의 경우 10 픽셀이 있으면 일치하지 않습니다. 또한 조직 모드 나 디스플레이 엔진으로 수행 할 수있는 작업이 없습니다. 그들은 당신의 구성에 따라 그들이 말한 것을했습니다.

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