2015-07-22 16 views
6

Próbuję przekonwertować zwykły tekst w formacie RTF. Dlatego używam RichTextBox (WinForms).
Dana metoda oznaczenia RTF jako ciąg.Rozłożenie linii tekstu w formacie RTF

Teraz chcę wstawić odstępy między wierszami w znacznikach. Uważam, że są 2 parametry:

- \slX (Space between lines in twips) 
- \slmultX (either 0 or 1) 

Jeżeli ustawić \slmult0, interlinia jest powyżej linii tekstu.
Po ustawieniu \slmult1, odstęp między wierszami wynosi poniżej linii tekstu.

obliczyć odległości w następujący sposób:

(lineSpacing + fontSize)*20 

Gdy przełączony z \slmult0 do \slmult1, że określone, że odległość linii jest nieco mniejsza niż \slmult0.

Czy ktoś zna przyczynę tego zachowania? Czy muszę obliczać za pomocą innej formuły?

+1

To może być prostsze, aby przejść przez coś jak docx jako reprezentacji pośredniej tutaj jako oprzyrządowanie jest lepiej. –

+0

_Zapewniłem, że odległość linii jest trochę mniejsza _ Jak to zrobiłeś? – TaW

+0

Można to zobaczyć na przykład w programie wordpad: Utwórz nowy odstęp między plikami RTF na "2". Następnie zapisz + zamknij plik -> skopiuj -> zmień w kopii \ slmult0 na 1 i porównaj oba pliki w programie wordpad. – Chris2011931

Odpowiedz

2

Jeśli ustawię \ slmult0, odstępy między liniami są powyżej linii tekstu. Po ustawieniu \ slmult1 odstępy między wierszami są poniżej linii tekstu.

To nie jest to, co przeczytałem w specs.

Tak jak ja to rozumiem, oznacza to, że \slmult0 mówi, że wartość \slN ma być używany bezpośrednio jako odległość w jakiejś jednostce, natomiast \slmult1 mówi N w \slN służy jako czynnik przez który regularne odstępy między wierszami są mnożone.

Zobacz ostatni wpis here dla (niektórych) więcej szczegółów! (Ale jest też informacja o tym, że zaczyna działać o jedną linię za późno).

Należy również zwrócić uwagę na znaczenie znaku N w \slN! (To był powód mojego komentarza powyżej: Efekt, powiedzmy \sl234, będzie zależeć od wielkości najwyższego znaku w wierszu ..)

Here jest miły omówienie Niektóre rzeczy RTF; uwaga na temat jednostek:

Pomiary w RTF są generalnie w puntach. Twip to dwudziesta część z punktu , tj. 1440 cala.To prowadzi do pewnych licznie czasami (jak \ li2160, aby ustawić wcięcie z lewej strony do cala i pół)

i jasnej definicji dodatkowego odstępu przed i po akapitach:

\ SBN - N twipów z dostawką (w pionie) przestrzeni przed niniejszym ustępie (domyślnie: 0)
\ san - N twipów z dodatkową przestrzenią (w pionie) po niniejszym ustępie (domyślnie: 0)

Here są bardziej bezpośrednie instrukcje:

dwukrotne przestrzeni paragraf, umieścić kod \ sl480 \ slmult1 prawo po katalogu \ pard. Aby to zrobić trzykrotnie, użyj \ sl720 \ slmult1. Aby uzyskać zaledwie 1-punktowe odstępy, użyj \ sl360 \ slmult1. Pojedynczy akapit jest wartością domyślną i nie wymaga żadnego konkretnego kodu. (The Magic Numbers 480, 720 i 360 nie zależą od wielkości punktowej tekstem pkt.)

+0

Cześć TaW, dziękuję za podpowiedź anser. Myślę, że muszę wyjaśnić moje pytanie. Potrzebuję zachowania z \ slmult0 (odległość), ale przestrzeń powinna być poniżej linii tekstu. Ponadto pytanie do postu w linku. Jaka jest pojedyncza interlinia w pt/twips ("\ slN oznacza, że ​​odstęp między wierszami wynosi N/240 * (odstępy między wierszami)") – Chris2011931

+0

Dodałem kilka dodatkowych linków i cytatów do nauki. Zawsze oczekiwałbym, że odstępy będą miały wpływ tylko na jeden akapit, dla którego go ustawiłeś, co oznacza, że ​​odstęp pomiędzy wszystkimi _ jego liniami. Czy ustawiłeś to wcześniej lub (zgodnie z poleceniem zaraz po \ pard lub (jeśli nie zresetujesz akapitu po \ par))? – TaW

Powiązane problemy