2009-12-16 27 views
5

Per alcuni test automatici è necessario creare un Documento di Word che contenga tutti i caratteri di un font (per diversi tipi di carattere). C'è un modo semplice per creare una macro che attraversa tutti i caratteri disponibili in un font (e li inserisce in un documento)?Stampa tutti i caratteri di un carattere in MS Word

+0

Modifica la tua domanda e sostituisci il carattere con glifo. I caratteri non contengono caratteri ma glifi. – bogdan

risposta

1

Geez ... Ho fatto qualcosa del genere tanto tempo fa ... Sì, è possibile farlo.

Un buon inizio è la MSDN


A cura di aggiungere:

ho capito di aver fatto qualcosa di simile prima. Passando attraverso alcune delle mie vecchie e-mail ho trovato una macro che ho inviato ad un mio amico che contiene esattamente questo. Eccolo:

Sub GenerateFontCatalog() 
' 
' Macro created in 05/14/2008 by Paulo Santos 
' 
Dim i As Long 
Dim j As Long 
Dim fnt As String 
Dim doc As Document 
Dim fnts() As String 

'* 
'* Get all font names 
'* 
Word.StatusBar = "Reading Font Names..." 
ReDim fnts(Word.FontNames.Count) 
For i = 1 To Word.FontNames.Count 
    fnts(i) = Word.FontNames.Item(i) 
    DoEvents 
Next 

'* 
'* Sort alphabetically 
'* 
Word.StatusBar = "Sorting Font Names..." 
For i = 1 To UBound(fnts) 
    For j = i + 1 To UBound(fnts) 
     If (fnts(i) > fnts(j)) Then 
      fnt = fnts(i) 
      fnts(i) = fnts(j) 
      fnts(j) = fnt 
     End If 
    Next 
    DoEvents 
Next 

Word.StatusBar = "Generating Font Catalog..." 

Set doc = Application.Documents.Add() 
doc.Activate 

'* 
'* Page configuration 
'* 
With ActiveDocument.PageSetup 
    .Orientation = wdOrientPortrait 
    .TopMargin = CentimetersToPoints(2) 
    .BottomMargin = CentimetersToPoints(2) 
    .LeftMargin = CentimetersToPoints(2) 
    .RightMargin = CentimetersToPoints(2) 
End With 

For i = 1 To UBound(fnts) 
    '* 
    '* Write font name 
    '* 
    Selection.Font.Name = "Arial" 
    Selection.Font.Size = 10 
    If (i > 1) Then 
     Selection.TypeParagraph 
     Selection.ParagraphFormat.KeepTogether = False 
     Selection.ParagraphFormat.KeepWithNext = False 
     Selection.TypeParagraph 
    End If 
    Selection.TypeText fnts(i) 
    Selection.ParagraphFormat.KeepWithNext = True 
    Selection.TypeParagraph 

    '* 
    '* Write font sample 
    '* 
    Selection.Font.Name = fnts(i) 
    Selection.Font.Size = 16 
    Selection.TypeText "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & Chr(11) 
    Selection.TypeText "abcdefghijklmnopqrstuvwxyz" & Chr(11) 
    Selection.TypeText "" 
    Selection.ParagraphFormat.KeepTogether = True 

    DoEvents 
Next 

'* 
'* Adjust cursor position 
'* 
Selection.HomeKey Unit:=wdStory 
Selection.InsertBreak Type:=wdSectionBreakNextPage 
Selection.MoveLeft Unit:=wdCharacter, Count:=1 
Selection.MoveUp Unit:=wdLine, Count:=1 

Word.StatusBar = "Generating Font Index..." 
For i = 1 To UBound(fnts) 
    Selection.Font.Name = "Arial" 
    Selection.Font.Size = 10 
    Selection.TypeText fnts(i) & vbTab 
    Selection.Font.Name = fnts(i) 
    Selection.TypeText "ABC abc 123" 
    Selection.TypeParagraph 
Next 

'* 
'* Split the document in two columns 
'* 
With Selection.Sections(1).PageSetup.TextColumns 
    .SetCount NumColumns:=2 
    .EvenlySpaced = True 
    .LineBetween = False 
End With 
Selection.HomeKey Unit:=wdStory, Extend:=True 
Selection.ParagraphFormat.TabStops.Add Position:=Selection.Sections(1).PageSetup.TextColumns(1).Width, Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces 

Selection.HomeKey Unit:=wdStory 
Word.StatusBar = "" 

End Sub 
+0

Non ho davvero bisogno di un elenco di caratteri ma di un elenco di tutti i caratteri in un font. – leonm

+0

Bella macro (anche se non è esattamente quello che voleva il richiedente in questo caso particolare) - grazie per la condivisione! – monojohnny

1

C'è un motivo particolare per cui ha bisogno di essere in Word? È semplicemente per visualizzare tutti i caratteri di un font? In tal caso, è possibile utilizzare Libro Font in OS X e andare a Stampa, selezionare Tipo di rapporto: Reperire e salvare in PDF.

Modifica: Sembra che abbia saltato "test automatizzati". Ignorare.

0

Sembra un buon compromesso è quello di creare un file html con & #XXX; voci per ogni carattere e quindi aprirlo con MS Word.

+0

Perché il downvote? Sembra una soluzione perfettamente accettabile, soprattutto perché non è possibile accedere all'elenco di caratteri in Word. – leonm

0

Sarà bella idea di inserire

Il quick brown fox salta sul cane pigro

e ciclo attraverso i caratteri che devono essere testati utilizzando una macro.

+0

http://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog può essere visto per ulteriori dettagli – Thunder

0

Programmi come MS Word non saranno in grado di dirvi quali caratteri sono disponibili in un font. Per quanto posso dirti dall'esperienza, solo l'applicazione "Mappa caratteri" della finestra può mostrarti. Mappa dei personaggi può essere trovata nel menu Start tramite Accessori, o in alternativa con Start, Esegui ..., e digitando "charmap" ma non esiste un metodo conveniente per raccogliere questi caratteri da Mappa caratteri o MS Word.

Strettamente in Word, non ho idea se sia possibile, ma dal momento che è possibile eseguire script in Word, sono sicuro che è possibile leggere i file dei font e leggere i loro dati binari per raccogliere i caratteri disponibili al suo interno. è il modo prolisso, e forse l'unico modo per ottenere ciò che desideri.

Non sono stato in grado di trovare un programma adatto online per fare questo anche per me, mi dispiace.

Problemi correlati