노 브레이크 스페이스와 좁은 노 브레이크 스페이스가 일반 공백으로 대체됩니다

게시물에 붙임 공백(NBSP, U+00A0)과 좁은 붙임 공백(NNBSP, U+202F)을 허용할 수 있을까요?

현재 Discourse는 이러한 공백을 일반 공백(SP, U+0020)으로 대체하고 있습니다(코드 조각(code fragments) 안에서도 마찬가지입니다). 이로 인해 텍스트가 줄바꿈될 때 프랑스어 숫자 표기가 깨집니다.

프랑스어에서는 !?;:»와 같은 구두점 앞에는 최소한 NNBSP가, «–—와 같은 구두점 뒤에는 NNBSP가, 그리고 큰 숫자의 3자리 그룹 사이에는 NNBSP가 있어야 합니다.

프랑스어 표준에 따라 표시가 깨진 예를 아래에 보여 드립니다.

2 400 000과 28 800은 이렇게 중간에 끊겨서는 안 되며, 같은 줄에 남아 있어야 합니다.

텍스트에 NBSP 또는 NNBSP가 포함된 경우, 이는 오타나 의도치 않은 실수가 아니라고 생각합니다.

3개의 좋아요

이것들을 위한 HTML 엔티티가 있나요? 예를 들어  는 이렇게 작동합니다:       ← 공백

3개의 좋아요

NARROW NO-BREAK SPACE를 천 단위 구분자로  를 사용해 보겠습니다. 80 000 test 80 000 test 80 000 test 80 000 test 80 000 80 000 test 80 000 test 80 000 80 000 test 80 000 test 80 000 test 80 000 test 80 000 test 80 000 test 80 000 test 80 000 80 000 test 80 000 test 80 000 test 80 000 test 80 000.

역시 작동하네요!
다른 포럼의 게시글을 수정했는데 이제 숫자가 잘 표시됩니다.
이름이 있는 HTML 엔티티는 없지만 이렇게 유니코드 코드를 사용할 수 있습니다. :slight_smile::+1:
우회 방법 알려주셔서 감사합니다, @codinghorror.

2개의 좋아요

이 의견에 동의합니다. 프랑스어에서는 :, !, ? 앞에 공백이 있는 문자(띄어쓰기)가 사용되며, 이는 이전 단어와 띄어쓰기를 하고 다음 줄로 넘어가는 것을 방지하기 위한 것입니다.

현재 노브레이크 스페이스를 일반 공백으로 대체하는 동작:

Screenshot 2021-11-04 at 11-18-55 Jolie admin Flask - Entraide - AFPy

노브레이크 스페이스를 유지하면 더 이상 “홀로 남은 세미콜론” 같은 문제가 발생하지 않습니다:

Screenshot 2021-11-04 at 11-19-43 Jolie admin Flask - Entraide - AFPy

이러한 문자에 대해 HTML 이스케이프 시퀀스가 필요하다고 생각하지 않습니다. 다른 비-ASCII 문자에 대해 HTML 이스케이프 시퀀스가 필요하지 않은 것과 같은 이유입니다. 페이지는 UTF-8로 인코딩되어 브라우저에 전달되며, 노브레이크 스페이스를 포함한 모든 문자에는 UTF-8 표현이 존재합니다. 예를 들어:

→, √, ½, ñ, Ł, …

(즉, 왜 Discourse는 대부분의 유니코드 시퀀스는 허용하지만 노브레이크 스페이스만 허용하지 않는 것일까요?)

4개의 좋아요

네, 전적으로 동의합니다.
NARROW NO-BREAK SPACE를 위한   구문을 도저히 기억하지 못합니다. :confused:

1개의 좋아요

@j.jaffeux 님과 @zogstrip 님은 어떻게 생각하시나요?

그리고 U+202F 좁은 공백(No-Break Space) 도 마찬가지입니다.
프랑스어 인쇄물에서 볼 수 있듯이, 문장 부호 앞에 사용할 때 가장 자연스러운 외관을 제공하는 문자입니다.

이것은 우리의 텍스트 클리너입니다:

이것은 게시글을 수정하되 아무것도 변경하지 않는 형태의 단순한 괴롭힘을 방지하기 위해 이루어진 것이라고 생각합니다. 그러면 사람들이 머리를 긁적이며 … 뭐가 바뀌었지?라고 묻게 되거든요.

3개의 좋아요

저도 그렇게 기억합니다. 이러한 '문자’가 괴롭힘 목적으로 사용될 때, diff를 더 나은 방식으로 처리/표시할 수 있는 방법이 있다면 mornalize_whitespaces 메서드를 제거하는 데에는 문제가 없습니다.

3개의 좋아요

새로운 설정(기본값: 켜짐)으로 mornalize_whitespaces 기능을 활성화할 수 있을까요? 그렇게 되면, 해당 사용 환경에서 고의적 훼손(griefing) 문제보다 타이포그래피 문제가 더 중요한 경우 로컬 관리자가 이 기능을 비활성화할 수 있게 됩니다.

1개의 좋아요

빠른 구글 검색 결과로는 그게 사실이 아니라고 합니다. 아니면 제가 spaced(띄어쓰기)라는 말의 의미를 잘못 이해하고 있는 걸까요? ← AFAIK(제가 아는 한) 그 물음표는 띄어쓰기가 아닙니다.

그리고 그 문법 규칙은 천 단위 구분처럼 모든(서구) 언어에 적용됩니다. 이 문장처럼 'There Shouln’t Be Something Like This Either’처럼 쓰는 것도 마찬가지입니다. :wink:

프랑스어가 단어와 구두점을 붙여 쓴다고 말해 준 출처가 무엇인지 보고 싶습니다.

여기에는 구두점(?, !, :. .이나 ,는 아님)은 왼쪽의 단어와 공백을 두어야 한다는 내용을 담은 몇 가지 출처가 있습니다. 예: « Comment vas-tu ? »

  • https://jacques-andre.fr/faqtypo/lessons.pdf 32쪽. 프랑스어 타이포그래피에 관한 무료 책입니다.
  • 「Lexique des règles typographiques en usage à l’Imprimerie nationale」(국가 인쇄국에서 사용하는 타이포그래피 규칙 사전) 149쪽에서 « espace fine insécable ? espace juistifiante »라고 되어 있습니다. 따라서 U+00A0(NO-BREAK SPACE)을 사용하라고 하지 않고 U+202F(NARROW NO-BREAK SPACE)을 사용하라고 합니다. (제 키보드에서 어떻게 입력하는지 모르지만, 어쨌든 U+0020(SPACE)은 아닙니다. 안타깝게도 이 책은 무료가 아니므로 하이퍼링크를 제공하지 못합니다.)
  • 프랑스어 위키백과에서는 이렇게 설명합니다: « En France, il est d’usage de placer une espace fine insécable avant le point d’interrogation, ou une espace insécable si la fine n’est pas disponible. » (프랑스에서는 물음표 앞에 얇은 붙임 공백(thin non-breaking space)을 두는 것이 관습이며, 얇은 붙임 공백이 사용 불가능할 경우 붙임 공백(non-breaking space)을 사용합니다.)
2개의 좋아요

프랑스어를 배울 수 있다고 생각하는 초보자를 위한 교재/워크북 중 하나입니다. :wink: 저는 다시 돌아가서…, 영어로 뭐라고 해야 할지 모르겠지만, 성인을 위한 커뮤니티 야간 학교 같은 곳—여가 시간을 보내고 새로운 것을 배우는 방법—에서 그 텍스트 사진을 찍어 보겠습니다.

하지만 제 말이 맞습니다. 이 부분은 저보다 당신이 훨씬 더 잘 알고 계시니까요.

1개의 좋아요