2015-07-22 27 views
6

Provo a convertire un testo normale in formato RTF. Pertanto, io uso RichTextBox (WinForms).
Il metodo interessato RTF-Markup come stringa.Intervallo di riga in formato RTF

Ora, voglio inserire l'interlinea nel markup. Ho trovato che ci sono 2 parametri:

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

Se regolo \slmult0, la spaziatura è sopra la riga di testo.
Quando si imposta \slmult1, l'interlinea è sotto la riga di testo.

posso calcolare la spaziatura nel seguente modo:

(lineSpacing + fontSize)*20 

Quando sono passato da \slmult0 a \slmult1, decisi, che la distanza in linea è poco più piccola con \slmult0.

Qualcuno conosce il motivo di questo comportamento? Devo calcolare con un'altra formula?

+1

Potrebbe essere più semplice per passare attraverso qualcosa come docx come rappresentazione intermedia qui come l'attrezzatura è meglio. –

+0

_Conosco che la distanza della linea è un po 'più piccola _ Come hai fatto? – TaW

+0

Puoi vederlo ad esempio nel wordpad: Crea un nuovo file RTF cambia la spaziatura in "2". Quindi, salva + chiudi il file -> copia -> cambia nella copia \ slmult0 in 1 e confronta entrambi i file nel wordpad. – Chris2011931

risposta

2

Se si imposta \ slmult0, l'interlinea si trova sopra la riga di testo. Quando imposto \ slmult1, l'interlinea si trova sotto la riga di testo.

Questo non è quello che ho letto nel specs.

Il modo ho capito, significa che \slmult0 dice che il valore di \slN deve essere utilizzato direttamente come distanza in qualche unità, mentre \slmult1 dice il N in \slN è inteso come fattore da cui la spaziatura delle linee regolari viene moltiplicata.

Vedere l'ultimo post here per (alcuni) maggiori dettagli! (Ma c'è anche una nota sul fatto che ha effetto su una riga troppo tardi ..)

Inoltre, si noti l'importanza del segno di nel \slN! (Questa è stata la ragione del mio commento sopra: L'effetto di, diciamo \sl234, dipenderà dalla grandezza del più alto carattere nella linea ..)

Here è una bella discussione di alcune cose RTF; una nota sulle unità:

Le misure in RTF sono generalmente in twip. Un twip è un ventesimo di un punto , vale a dire un 1440esimo di pollice.Questo porta ad alcune grandi numeri a volte (come \ li2160, per impostare il rientro sinistro a un pollice e mezzo)

e una chiara definizione della spaziatura extra prima e dopo i paragrafi:

\ SBN - N twips di spazio in più (verticale) prima di questo paragrafo (default: 0)
\ sAN - N twips di spazio in più (verticale) dopo questo paragrafo (default: 0)

Here sono più istruzioni dirette:

Per fare doppio spazio di un paragrafo, inserire il codice \ sl480 \ slmult1 destra dopo il \ pard. Per triplicarlo, usa \ sl720 \ slmult1. Per avere solo 1,5-spaziatura, usare \ sl360 \ slmult1. Un paragrafo a spaziatura singola è l'impostazione predefinita e non richiede alcun codice particolare. (I numeri magici 480, 720, e 360 ​​non dipendono dalla dimensione punto del testo nel paragrafo .)

+0

Ciao TaW, grazie per la pronta risposta. Penso, devo chiarire la mia domanda. Ho bisogno del comportamento da \ slmult0 (distanza), ma lo spazio dovrebbe essere al di sotto della riga di testo. Inoltre una domanda per il post nel link. Qual è l'interlinea singola in pt/twips ("\ slN significa che l'interlinea è N/240 * (interlinea singola)") – Chris2011931

+0

Ho aggiunto qualche altro link e citazioni da studiare. Mi aspetterei sempre che la spaziatura influenzi solo il paragrafo per cui lo hai impostato, cioè la spaziatura tra tutte le sue linee. L'hai impostato prima o (come consigliato subito dopo \ pard o (se non si ripristina il paragrafo dopo \ par))? – TaW