programing

wpf 형식의 텍스트로 위첨자 및 아래첨자 설정

magicmemo 2023. 4. 16. 14:50
반응형

wpf 형식의 텍스트로 위첨자 및 아래첨자 설정

에서 일부 텍스트를 첨자/첨자로 설정하려면 어떻게 해야 합니까?FormattedTextWPF에서요?

타이포그래피를 사용합니다.종류:

<TextBlock>
    <Run>Normal Text</Run>
    <Run Typography.Variants="Superscript">Superscript Text</Run>
    <Run Typography.Variants="Subscript">Subscript Text</Run>
</TextBlock>

이런 걸 쓸 수 있어요.<TextBlock>5x<Run BaselineAlignment="Superscript">4</Run> + 4</TextBlock>.

단, 폰트 사이즈는 본인이 줄여야 하는 것으로 알고 있습니다.

흥미로운 점은 일부 문자(m2, m3 등)에서는 위첨자가 필요하지 않지만 유니코드 문자를 사용할 수 있다는 것입니다.예를 들어 다음과 같습니다.

<Run Text=" m&#x00B3;" />

이렇게 하면 m이 나옵니다3.

레이아웃 변환을 사용했습니다.Typography.Variants동작하지 않는 경우가 많다:

<TextBlock Text="MyAmazingProduct"/>
 <TextBlock Text="TM">
  <TextBlock.LayoutTransform>
   <!-- Typography.Variants="Superscript" didn't work -->
   <TransformGroup>
    <ScaleTransform ScaleX=".75" ScaleY=".75"/>
    <TranslateTransform Y="-5"/>
   </TransformGroup>
  </TextBlock.LayoutTransform>
 </TextBlock>
<TextBlock Text="{Binding Path=Version, StringFormat={} v{0}}"/>

를 사용하는 장점LayoutTransform폰트 사이즈에 둔감하다는 것입니다.나중에 글꼴 크기를 변경하면 이 상위 첨자는 명시적인 FontSize 설정이 중단되는 곳에서 작동합니다.

포맷된 파일을 사용하기 위해 이 파일이 필요한지 모르겠습니다.텍스트, 즉 Inline의 파생물을 의미하지만, 타이포그래피라고 해도 다음 항목은 Inline에서 작동합니다.종류="Superscript"가 작동하지 않습니다.

TextRange selection = new TextRange(document.ContentStart, document.ContentEnd);
selection.ApplyPropertyValue(Inline.BaselineAlignmentProperty, BaselineAlignment.Superscript);

도움이 됐으면 좋겠다!

타이포그래피변형은 개방형 글꼴에 대해서만 작동합니다.위첨자/아래첨자가 실제 텍스트의 높이를 벗어나는 것을 좋아하지 않는 경우 다음과 같은 방법을 사용할 수 있습니다.

<StackPanel Orientation="Horizontal">
    <TextBlock FontSize="10" Margin="0,5,0,0">1</TextBlock>
    <TextBlock FontSize="30">H</TextBlock>
    <TextBlock FontSize="10" Margin="0,20,0,0">2</TextBlock>
</StackPanel>

나한테는 이것밖에 안 먹혔어쨌든.또한 정렬 및 글꼴 크기를 더 잘 제어할 수 있습니다.

<TextBlock Grid.Row="17">
    3 x 3<Run FontSize="6pt" BaselineAlignment="TextTop">2</Run>)
</TextBlock>

슈퍼스크립트의 설정은, 다음의 코드로 정상적으로 동작합니다.

<TextBlock Text="(cm"  />
<TextBlock ><Span BaselineAlignment="Top" FontSize="8">2</Span></TextBlock>
<TextBlock Text=")" />

Span 태그의 서브스크립트에 대한 Baseallocation을 설정하는 것은 효과가 없었습니다.다음 코드를 시도해보니 정상적으로 동작했습니다.

  <TextBlock Text="H"  />
  <TextBlock Text="2" Margin="-2,0,-2,0" TextBlock.LineHeight="3" >   
  <TextBlock Text="O" />

언급URL : https://stackoverflow.com/questions/2095583/set-superscript-and-subscript-in-formatted-text-in-wpf

반응형