문자열이나 문자의 높이를 측정하기 위해 Groff에 어떤 방법(명령, 요청...)이 있습니까?

문자열이나 문자의 높이를 측정하기 위해 Groff에 어떤 방법(명령, 요청...)이 있습니까?

저는 문자열의 크기(너비와 높이)를 찾는 것과 관련된 방정식의 제곱근을 플롯하기 위한 전처리기를 개발 중입니다(EQN 방정식의 미학을 개선하려고 노력 중입니다). 문자열 또는 문자 너비를 반환하는 요청/명령 및 레지스터를 찾았 \w'H'지만 높이를 반환하는 요청/명령을 찾을 수 없습니다. 키를 알 수 있는 방법이 있나요?

매우 감사합니다.

답변1

\w이스케이프 시퀀스를 사용할 때 마다 여러 레지스터는 사용자가 제공한 인수에 대한 정보로 채워집니다.

다음은 Git 저장소에 있는 groff Texinfo 매뉴얼의 내용을 약간 수정한 것입니다.

-- Escape sequence: \w'anything'
-- Register: \n[st]
-- Register: \n[sb]
-- Register: \n[rst]
-- Register: \n[rsb]
-- Register: \n[ct]
-- Register: \n[ssc]
-- Register: \n[skw]
 Interpolate the width of ANYTHING in basic units.  This escape
 sequence allows several properties of formatted output to be
 measured without writing it out.

      The length of the string 'abc' is \w'abc'u.
          => The length of the string 'abc' is 72u.

 ANYTHING is processed in a dummy environment: this means that font
 and type size changes, for example, may occur within it without
 affecting subsequent output.

 After each use, '\w' sets several registers.

 'st'
 'sb'
      The maximum vertical displacements of the text baseline above
      and below, respectively.  The sign convention is opposite that
      of relative vertical motions; that is, depth below the
      (original) baseline is negative.  These registers are
      incorrectly documented in the AT&T 'troff' manual as "the
      highest and lowest extent of [the argument to '\w'] relative
      to the baseline".

 'rst'
 'rsb'
      Like 'st' and 'sb', but taking account of the heights and
      depths of glyphs.  In other words, these registers store the
      highest and lowest vertical positions attained by ANYTHING,
      doing what AT&T 'troff' documented 'st' and 'sb' as doing.

 'ct'
      Characterizes the geometry of glyphs occurring in ANYTHING.

      0   only short glyphs, no descenders or tall glyphs

      1   at least one descender

      2   at least one tall glyph

      3   at least one each of a descender and a tall glyph

 'ssc'
      The amount of horizontal space (possibly negative) that should
      be added to the last glyph before a subscript.

 'skw'
      How far to right of the center of the last glyph in the '\w'
      argument, the center of an accent from a roman font should be
      placed over that glyph.

ct"nroff 모드"라고도 알려진 터미널 장치에서 입력이 무엇이든 관계없이 레지스터 값은 일반적으로 0이라는 점을 추가하고 싶습니다. 어차피 nroff 장치는 미세한 수직 이동이 불가능하기 때문인 것 같습니다. 역사적으로 그들은 기껏해야 반 라인만 이동할 수 있었고 비디오 터미널과 해당 에뮬레이터는 그렇게 할 수도 없었습니다.

답변2

글꼴의 포인트 크기는 다음 항목의 합계입니다.

  • 행간(문자 위에 공백 필요)
  • 라이저 또는 캡 높이(기준선과 가장 큰 문자 상단 사이의 공간)
  • 드롭(기준선과 가장 낮은 글자 하단 사이의 공간)

라이저 또는 대문자 높이는 x 높이(문자 "x"와 라이저의 높이)의 합입니다.

이 숫자는 글꼴과 관련이 있습니다. 두 줄을 인쇄하여 xhY측정할 수 있습니다(더 크게 인쇄하고 결과를 포인트 크기의 백분율로 유지).

바라보다https://www.onlineprinters.co.uk/magazine/font-sizes/그리고/또는http://web.mit.edu/6.813/www/sp18/classes/16-typography/또는 Google에서 이 용어를 사용하여 이미지를 얻습니다.

글자 위에 제곱근 기호를 붙이고 싶지 않다면 지시선을 존중해야 합니다. 만약 당신이 승천자가 없었다고 확신한다면, 당신은 승천자를 무시하는 것을 선택할 수도 있습니다. 하락폭은 기준선 아래에 있으므로 무시하도록 선택할 수 있습니다.

groff에서는 여전히 그렇습니다. 그러나 줄 간격은 .vs(등록: \n[.v])와 매우 다를 수 있습니다.

로마 시대의 경우 대략 다음을 사용할 수 있습니다.

  • 감소=20%
  • x 높이=42%
  • 증가=75%

그러나 이는 대략적인 근사치일 뿐입니다.

관련 정보