2009-12-16 24 views
5

Para algunas pruebas automáticas, necesito crear un documento de Word que contenga todos los caracteres de una fuente (para varias fuentes diferentes). ¿Existe una manera fácil de crear una macro que recorre todos los caracteres disponibles en una fuente (y los inserta en un documento)?Imprimir todos los caracteres de una fuente en MS Word

+0

Por favor edite su pregunta y reemplace el personaje con glifo. Las fuentes no contienen caracteres sino glifos. – bogdan

Respuesta

1

Caray ... He hecho algo así hace mucho tiempo ... Sí, es posible hacerlo.

Un buen comienzo es la MSDN


Editado para añadir:

sabía que había hecho algo como esto antes. Al revisar algunos de mis correos electrónicos anteriores, encontré una macro que le envié a un amigo mío que contiene exactamente esto. Aquí está:

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

Realmente no necesito una lista de fuentes, sino una lista de todos los caracteres en una fuente. – leonm

+0

Bonito macro (aunque no es exactamente lo que el solicitante quería en este caso particular) - ¡gracias por compartir! – monojohnny

1

¿Hay alguna razón particular por la que debe estar en Word? ¿Es esto simplemente para visualizar todos los caracteres de una fuente? Si es así, puede usar el Libro de fuentes en OS X y vaya a Imprimir, seleccione Tipo de informe: Repetoire y guarde en PDF.

Editar: Parece que me perdí "pruebas automatizadas". Indiferencia.

0

Parece un compromiso bastante bueno crear un archivo html con & #XXX; entradas para cada personaje y luego abrir eso con MS Word.

+0

¿Por qué el voto a favor? Parece una solución perfectamente aceptable, especialmente porque no se puede acceder a la lista de caracteres en Word. – leonm

0

Será buena idea para insertar

El rápido zorro marrón salta sobre el perro perezoso

y bucle a través de las fuentes que necesitan ser probados utilizando una macro.

+0

http://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog se puede ver para obtener más detalles – Thunder

0

Programas como MS Word no podrán decirle qué caracteres están disponibles en una fuente. Por lo que puedo decir por experiencia, solo la aplicación "Mapa de caracteres" de la ventana puede mostrarlo. El Mapa de caracteres se puede encontrar en el menú Inicio a través de Accesorios o, alternativamente, mediante Inicio, Ejecutar ... y escribiendo "charmap", pero no existe un método conveniente para recopilar estos caracteres del Mapa de caracteres o MS Word.

Estrictamente en Word, no tengo idea si es posible, pero ya que puede ejecutar scripts en Word, estoy seguro de que es posible leer los archivos de fuente y leer sus datos binarios para recopilar los caracteres disponibles en su interior. ese es el camino largo y posiblemente la única forma de obtener lo que deseas.

No he podido encontrar un programa adecuado en línea para hacer esto por mí tampoco, lo siento.

Cuestiones relacionadas