Condividi tramite


Funzione CreateFontPackage (fontsub.h)

La funzione CreateFontPackage crea una versione subset di un tipo di carattere TrueType specificato, in genere per passarla a una stampante. Per consentire il fatto che le pagine successive in un documento potrebbero richiedere caratteri o glifi che non sono stati utilizzati nella prima pagina, questa funzione può creare un pacchetto di tipi di carattere del subset iniziale, quindi creare pacchetti di carattere "Delta" che possono essere uniti al pacchetto del tipo di carattere del subset originale, estendendolo in modo efficace.

Sintassi

unsigned long CreateFontPackage(
  [in]  const unsigned char  *puchSrcBuffer,
  [in]  const unsigned long  ulSrcBufferSize,
  [out] unsigned char        **ppuchFontPackageBuffer,
  [out] unsigned long        *pulFontPackageBufferSize,
  [out] unsigned long        *pulBytesWritten,
  [in]  const unsigned short usFlag,
  [in]  const unsigned short usTTCIndex,
  [in]  const unsigned short usSubsetFormat,
  [in]  const unsigned short usSubsetLanguage,
  [in]  const unsigned short usSubsetPlatform,
  [in]  const unsigned short usSubsetEncoding,
  [in]  const unsigned short *pusSubsetKeepList,
  [in]  const unsigned short usSubsetListCount,
  [in]  CFP_ALLOCPROC        lpfnAllocate,
  [in]  CFP_REALLOCPROC      lpfnReAllocate,
  [in]  CFP_FREEPROC         lpfnFree,
  [in]  void                 *lpvReserved
);

Parametri

[in] puchSrcBuffer

Punta a un buffer contenente dati TTF o TTC di origine, che descrivono il tipo di carattere che deve essere subsetto.

[in] ulSrcBufferSize

Specifica le dimensioni di *puchSrcBuffer, in byte.

[out] ppuchFontPackageBuffer

Punta a una variabile di tipo char*senza segno. La funzione CreateFontPackage allocherà un buffer **puchFontPackageBuffer, usando lpfnAllocate e lpfnReAllocate. Al termine della restituzione, il buffer conterrà il tipo di carattere o il pacchetto del tipo di carattere del subset. L'applicazione è responsabile della liberazione del buffer.

[out] pulFontPackageBufferSize

Punta a un valore long senza segno, che in caso di esito positivo, specifica le dimensioni allocate del buffer **puchFontPackageBuffer.

[out] pulBytesWritten

Punta a un valore long senza segno, che in caso di esito positivo restituirà il numero di byte effettivamente usati nel buffer **puchFontPackageBuffer.

[in] usFlag

Specifica se questo tipo di carattere deve essere sottoinsieme, compresso o entrambi; se si tratta di un TTF o TTC; e se*pusSubsetKeepListrepresenta codici di carattere o indici di glifi. È possibile specificare qualsiasi combinazione dei flag seguenti:

Valore Significato
TTFCFP_FLAGS_SUBSET
Se impostata, richiede la sottoinsieme.
TTFCFP_FLAGS_COMPRESS
Se impostato, richiede la compressione. La versione attualmente disponibile di questa funzione non esegue la compressione. Questo flag consente l'implementazione futura di questa funzionalità, ma attualmente viene ignorata.
TTFCFP_FLAGS_TTC
Se impostato, specifica che il tipo di carattere in puchSrcBuffer è un TTC; in caso contrario, deve essere un TTF.
TTFCFP_FLAGS_GLYPHLIST
Se impostato, specifica che*pusSubsetKeepListis un elenco di indici di glifi; in caso contrario, deve essere un elenco di codici carattere.

[in] usTTCIndex

Indice TTC in base zero; viene usato solo se TTFCFP_FLAGS_TTC è impostato in usFlags.

[in] usSubsetFormat

Formato del file da creare. Selezionare uno di questi valori; non possono essere combinati.

Valore Significato
TTFCFP_SUBSET
Creare un tipo di carattere subset autonomo che non può essere unito in un secondo momento.
TTFCFP_SUBSET1
Creare un pacchetto di tipi di carattere subset che può essere unito in un secondo momento.
TTFCFP_DELTA
Creare un pacchetto di tipi di carattere Delta che può essere unito a un tipo di carattere subset precedente.

[in] usSubsetLanguage

Lingua nella tabella Name da conservare. Se impostato su 0, verranno mantenute tutte le lingue. Usato solo per la sottoimpostazione iniziale, ovvero viene usato solo se usSubsetFormat è TTFCFP_SUBSET o TTFCFP_SUBSET1 e il flag TTFCFP_FLAGS_SUBSET è impostato in usFlags.

[in] usSubsetPlatform

In combinazione con usSubsetEncoding, specifica quale CMAP usare. Usato solo se *pusSubsetKeepList è un elenco di caratteri, ovvero viene usato solo se TTFCFP_FLAGS_GLYPHLIST non è impostato in usFlags. In tal caso, tramite questa sottotabella CMAP viene applicata a pusSubsetKeepList per creare un elenco di glifi da conservare nel tipo di carattere di output o nel pacchetto del tipo di carattere.

Se usato, deve accettare uno dei valori seguenti; non possono essere combinati:

Valore Significato
TTFCFP_UNICODE_PLATFORMID
TTFCFP_APPLE_PLATFORMID
TTFCFP_ISO_PLATFORMID
TTFCFP_MS_PLATFORMID

[in] usSubsetEncoding

In combinazione con usSubsetPlatform, specifica il CMAP da usare. Usato solo se *pusSubsetKeepList è un elenco di caratteri, ovvero viene usato solo se TTFCFP_FLAGS_GLYPHLIST non è impostato in usFlags.

Se usato, deve accettare uno dei valori seguenti; non possono essere combinati:

Valore Significato
TTFCFP_STD_MAC_CHAR_SET
Può essere usato solo se usSubsetPlatform == TTFCFP_APPLE_PLATFORMID.
TTFCFP_SYMBOL_CHAR_SET
Può essere usato solo se usSubsetPlatform == TTFSUB_MS_PLATFORMID.
TTFCFP_UNICODE_CHAR_SET
Può essere usato solo se usSubsetPlatform == TTFSUB_MS_PLATFORMID.
TTFCFP_DONT_CARE

[in] pusSubsetKeepList

Punta a una matrice di numeri interi che costituiscono un elenco di codici carattere o indici di glifi che devono essere conservati nel tipo di carattere o nel pacchetto di tipi di carattere di output. Se questo elenco contiene codici di carattere, ovvero se TTFCFP_FLAGS_GLYPHLIST non è impostato in usFlags, questo elenco può essere Unicode o un altro tipo di codifica, a seconda del Platform-Encoding CMAP specificato da usSubsetPlatform e usSubsetEncoding.

[in] usSubsetListCount

Numero di elementi nell'elenco *pusSubsetKeepList.

[in] lpfnAllocate

Funzione di callback per allocare la memoria iniziale per puchFontPackageBuffer e per i buffer temporanei.

[in] lpfnReAllocate

La funzione di callback per riallocare la memoria per puchFontPackageBuffer e per i buffer temporanei.

[in] lpfnFree

Funzione di callback per liberare memoria allocata da lpfnAllocate e lpfnReAllocate.

[in] lpvReserved

Deve essere impostato su NULL.

Valore restituito

Se la funzione ha esito positivo, restituisce zero.

In caso contrario, viene restituito un valore diverso da zero. Per informazioni sul possibile errore, vedere Messaggi di errore della funzione del pacchetto di tipi di carattere.

Commenti

Specificando un valore di TTFCFP_SUBSET per usSubsetFormat, è possibile creare direttamente un tipo di carattere funzionante anziché un pacchetto di tipi di carattere. Ciò non consente l'unione futura, ma se non è necessario eseguire l'unione, questo ignora un passaggio nell'elaborazione downstream: un pacchetto di tipi di carattere deve essere riconvertito in un tipo di carattere funzionante prima di poterlo usare.

Specificando un valore di TTFCFP_SUBSET1 per usSubsetFormat, è possibile creare un pacchetto di tipi di carattere che consenta l'unione successiva. Si consideri ad esempio il caso in cui un'applicazione chiama questa funzione all'inizio di un processo di stampa di grandi dimensioni. Parte del processo di stampa, l'applicazione rileva che necessita di glifi che non si trovano nel sottoinsieme creato. L'applicazione può effettuare un'altra chiamata a CreateFontPackage, questa volta specificando un valore di TTFCFP_DELTA per usSubsetFormat. La stampante può utilizzare MergeFontPackage per unire questi glifi aggiuntivi.

Un oggetto CMAP esegue il mapping dalle codifiche dei caratteri ai glifi. Se *pusSubsetKeepList è un elenco di valori di carattere, l'applicazione usa i parametri usSubsetPlatform e usSubsetEncoding per specificare il tipo di CMAP in uso, in modo che i valori di carattere possano essere mappati ai glifi.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione fontsub.h
Libreria FontSub.lib
DLL FontSub.dll

Vedi anche

CFP_ALLOCPROC

CFP_FREEPROC

CFP_REALLOCPROC

MergeFontPackage