ホーム › Graphics.Gdi › CreateFontPackage
CreateFontPackage
関数TrueTypeフォントのサブセット化フォントパッケージを作成する。
シグネチャ
// FONTSUB.dll
#include <windows.h>
DWORD CreateFontPackage(
const BYTE* puchSrcBuffer,
DWORD ulSrcBufferSize,
BYTE** ppuchFontPackageBuffer,
DWORD* pulFontPackageBufferSize,
DWORD* pulBytesWritten,
WORD usFlag,
WORD usTTCIndex,
WORD usSubsetFormat,
WORD usSubsetLanguage,
CREATE_FONT_PACKAGE_SUBSET_PLATFORM usSubsetPlatform,
CREATE_FONT_PACKAGE_SUBSET_ENCODING usSubsetEncoding,
const WORD* pusSubsetKeepList,
WORD usSubsetListCount,
CFP_ALLOCPROC lpfnAllocate,
CFP_REALLOCPROC lpfnReAllocate,
CFP_FREEPROC lpfnFree,
void* lpvReserved
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| puchSrcBuffer | BYTE* | in |
| ulSrcBufferSize | DWORD | in |
| ppuchFontPackageBuffer | BYTE** | inout |
| pulFontPackageBufferSize | DWORD* | inout |
| pulBytesWritten | DWORD* | inout |
| usFlag | WORD | in |
| usTTCIndex | WORD | in |
| usSubsetFormat | WORD | in |
| usSubsetLanguage | WORD | in |
| usSubsetPlatform | CREATE_FONT_PACKAGE_SUBSET_PLATFORM | in |
| usSubsetEncoding | CREATE_FONT_PACKAGE_SUBSET_ENCODING | in |
| pusSubsetKeepList | WORD* | in |
| usSubsetListCount | WORD | in |
| lpfnAllocate | CFP_ALLOCPROC | in |
| lpfnReAllocate | CFP_REALLOCPROC | in |
| lpfnFree | CFP_FREEPROC | in |
| lpvReserved | void* | inout |
戻り値の型: DWORD
各言語での呼び出し定義
// FONTSUB.dll
#include <windows.h>
DWORD CreateFontPackage(
const BYTE* puchSrcBuffer,
DWORD ulSrcBufferSize,
BYTE** ppuchFontPackageBuffer,
DWORD* pulFontPackageBufferSize,
DWORD* pulBytesWritten,
WORD usFlag,
WORD usTTCIndex,
WORD usSubsetFormat,
WORD usSubsetLanguage,
CREATE_FONT_PACKAGE_SUBSET_PLATFORM usSubsetPlatform,
CREATE_FONT_PACKAGE_SUBSET_ENCODING usSubsetEncoding,
const WORD* pusSubsetKeepList,
WORD usSubsetListCount,
CFP_ALLOCPROC lpfnAllocate,
CFP_REALLOCPROC lpfnReAllocate,
CFP_FREEPROC lpfnFree,
void* lpvReserved
);[DllImport("FONTSUB.dll", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
static extern uint CreateFontPackage(
IntPtr puchSrcBuffer, // BYTE*
uint ulSrcBufferSize, // DWORD
IntPtr ppuchFontPackageBuffer, // BYTE** in/out
ref uint pulFontPackageBufferSize, // DWORD* in/out
ref uint pulBytesWritten, // DWORD* in/out
ushort usFlag, // WORD
ushort usTTCIndex, // WORD
ushort usSubsetFormat, // WORD
ushort usSubsetLanguage, // WORD
short usSubsetPlatform, // CREATE_FONT_PACKAGE_SUBSET_PLATFORM
short usSubsetEncoding, // CREATE_FONT_PACKAGE_SUBSET_ENCODING
ref ushort pusSubsetKeepList, // WORD*
ushort usSubsetListCount, // WORD
IntPtr lpfnAllocate, // CFP_ALLOCPROC
IntPtr lpfnReAllocate, // CFP_REALLOCPROC
IntPtr lpfnFree, // CFP_FREEPROC
IntPtr lpvReserved // void* in/out
);<DllImport("FONTSUB.dll", ExactSpelling:=True, CallingConvention:=CallingConvention.Cdecl)>
Public Shared Function CreateFontPackage(
puchSrcBuffer As IntPtr, ' BYTE*
ulSrcBufferSize As UInteger, ' DWORD
ppuchFontPackageBuffer As IntPtr, ' BYTE** in/out
ByRef pulFontPackageBufferSize As UInteger, ' DWORD* in/out
ByRef pulBytesWritten As UInteger, ' DWORD* in/out
usFlag As UShort, ' WORD
usTTCIndex As UShort, ' WORD
usSubsetFormat As UShort, ' WORD
usSubsetLanguage As UShort, ' WORD
usSubsetPlatform As Short, ' CREATE_FONT_PACKAGE_SUBSET_PLATFORM
usSubsetEncoding As Short, ' CREATE_FONT_PACKAGE_SUBSET_ENCODING
ByRef pusSubsetKeepList As UShort, ' WORD*
usSubsetListCount As UShort, ' WORD
lpfnAllocate As IntPtr, ' CFP_ALLOCPROC
lpfnReAllocate As IntPtr, ' CFP_REALLOCPROC
lpfnFree As IntPtr, ' CFP_FREEPROC
lpvReserved As IntPtr ' void* in/out
) As UInteger
End Function' puchSrcBuffer : BYTE*
' ulSrcBufferSize : DWORD
' ppuchFontPackageBuffer : BYTE** in/out
' pulFontPackageBufferSize : DWORD* in/out
' pulBytesWritten : DWORD* in/out
' usFlag : WORD
' usTTCIndex : WORD
' usSubsetFormat : WORD
' usSubsetLanguage : WORD
' usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM
' usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING
' pusSubsetKeepList : WORD*
' usSubsetListCount : WORD
' lpfnAllocate : CFP_ALLOCPROC
' lpfnReAllocate : CFP_REALLOCPROC
' lpfnFree : CFP_FREEPROC
' lpvReserved : void* in/out
Declare PtrSafe Function CreateFontPackage Lib "fontsub" ( _
ByVal puchSrcBuffer As LongPtr, _
ByVal ulSrcBufferSize As Long, _
ByVal ppuchFontPackageBuffer As LongPtr, _
ByRef pulFontPackageBufferSize As Long, _
ByRef pulBytesWritten As Long, _
ByVal usFlag As Integer, _
ByVal usTTCIndex As Integer, _
ByVal usSubsetFormat As Integer, _
ByVal usSubsetLanguage As Integer, _
ByVal usSubsetPlatform As Integer, _
ByVal usSubsetEncoding As Integer, _
ByRef pusSubsetKeepList As Integer, _
ByVal usSubsetListCount As Integer, _
ByVal lpfnAllocate As LongPtr, _
ByVal lpfnReAllocate As LongPtr, _
ByVal lpfnFree As LongPtr, _
ByVal lpvReserved As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
CreateFontPackage = ctypes.cdll.fontsub.CreateFontPackage
CreateFontPackage.restype = wintypes.DWORD
CreateFontPackage.argtypes = [
ctypes.POINTER(ctypes.c_ubyte), # puchSrcBuffer : BYTE*
wintypes.DWORD, # ulSrcBufferSize : DWORD
ctypes.c_void_p, # ppuchFontPackageBuffer : BYTE** in/out
ctypes.POINTER(wintypes.DWORD), # pulFontPackageBufferSize : DWORD* in/out
ctypes.POINTER(wintypes.DWORD), # pulBytesWritten : DWORD* in/out
ctypes.c_ushort, # usFlag : WORD
ctypes.c_ushort, # usTTCIndex : WORD
ctypes.c_ushort, # usSubsetFormat : WORD
ctypes.c_ushort, # usSubsetLanguage : WORD
ctypes.c_short, # usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM
ctypes.c_short, # usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING
ctypes.POINTER(ctypes.c_ushort), # pusSubsetKeepList : WORD*
ctypes.c_ushort, # usSubsetListCount : WORD
ctypes.c_void_p, # lpfnAllocate : CFP_ALLOCPROC
ctypes.c_void_p, # lpfnReAllocate : CFP_REALLOCPROC
ctypes.c_void_p, # lpfnFree : CFP_FREEPROC
ctypes.POINTER(None), # lpvReserved : void* in/out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('FONTSUB.dll')
CreateFontPackage = Fiddle::Function.new(
lib['CreateFontPackage'],
[
Fiddle::TYPE_VOIDP, # puchSrcBuffer : BYTE*
-Fiddle::TYPE_INT, # ulSrcBufferSize : DWORD
Fiddle::TYPE_VOIDP, # ppuchFontPackageBuffer : BYTE** in/out
Fiddle::TYPE_VOIDP, # pulFontPackageBufferSize : DWORD* in/out
Fiddle::TYPE_VOIDP, # pulBytesWritten : DWORD* in/out
-Fiddle::TYPE_SHORT, # usFlag : WORD
-Fiddle::TYPE_SHORT, # usTTCIndex : WORD
-Fiddle::TYPE_SHORT, # usSubsetFormat : WORD
-Fiddle::TYPE_SHORT, # usSubsetLanguage : WORD
Fiddle::TYPE_SHORT, # usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM
Fiddle::TYPE_SHORT, # usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING
Fiddle::TYPE_VOIDP, # pusSubsetKeepList : WORD*
-Fiddle::TYPE_SHORT, # usSubsetListCount : WORD
Fiddle::TYPE_VOIDP, # lpfnAllocate : CFP_ALLOCPROC
Fiddle::TYPE_VOIDP, # lpfnReAllocate : CFP_REALLOCPROC
Fiddle::TYPE_VOIDP, # lpfnFree : CFP_FREEPROC
Fiddle::TYPE_VOIDP, # lpvReserved : void* in/out
],
-Fiddle::TYPE_INT, Fiddle::Function::CDECL)#[link(name = "fontsub")]
extern "C" {
fn CreateFontPackage(
puchSrcBuffer: *const u8, // BYTE*
ulSrcBufferSize: u32, // DWORD
ppuchFontPackageBuffer: *mut *mut u8, // BYTE** in/out
pulFontPackageBufferSize: *mut u32, // DWORD* in/out
pulBytesWritten: *mut u32, // DWORD* in/out
usFlag: u16, // WORD
usTTCIndex: u16, // WORD
usSubsetFormat: u16, // WORD
usSubsetLanguage: u16, // WORD
usSubsetPlatform: i16, // CREATE_FONT_PACKAGE_SUBSET_PLATFORM
usSubsetEncoding: i16, // CREATE_FONT_PACKAGE_SUBSET_ENCODING
pusSubsetKeepList: *const u16, // WORD*
usSubsetListCount: u16, // WORD
lpfnAllocate: *const core::ffi::c_void, // CFP_ALLOCPROC
lpfnReAllocate: *const core::ffi::c_void, // CFP_REALLOCPROC
lpfnFree: *const core::ffi::c_void, // CFP_FREEPROC
lpvReserved: *mut () // void* in/out
) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("FONTSUB.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint CreateFontPackage(IntPtr puchSrcBuffer, uint ulSrcBufferSize, IntPtr ppuchFontPackageBuffer, ref uint pulFontPackageBufferSize, ref uint pulBytesWritten, ushort usFlag, ushort usTTCIndex, ushort usSubsetFormat, ushort usSubsetLanguage, short usSubsetPlatform, short usSubsetEncoding, ref ushort pusSubsetKeepList, ushort usSubsetListCount, IntPtr lpfnAllocate, IntPtr lpfnReAllocate, IntPtr lpfnFree, IntPtr lpvReserved);
"@
$api = Add-Type -MemberDefinition $sig -Name 'FONTSUB_CreateFontPackage' -Namespace Win32 -PassThru
# $api::CreateFontPackage(puchSrcBuffer, ulSrcBufferSize, ppuchFontPackageBuffer, pulFontPackageBufferSize, pulBytesWritten, usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, pusSubsetKeepList, usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved)#uselib "FONTSUB.dll"
#func global CreateFontPackage "CreateFontPackage" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
; CreateFontPackage varptr(puchSrcBuffer), ulSrcBufferSize, varptr(ppuchFontPackageBuffer), varptr(pulFontPackageBufferSize), varptr(pulBytesWritten), usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, varptr(pusSubsetKeepList), usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved ; 戻り値は stat
; puchSrcBuffer : BYTE* -> "sptr"
; ulSrcBufferSize : DWORD -> "sptr"
; ppuchFontPackageBuffer : BYTE** in/out -> "sptr"
; pulFontPackageBufferSize : DWORD* in/out -> "sptr"
; pulBytesWritten : DWORD* in/out -> "sptr"
; usFlag : WORD -> "sptr"
; usTTCIndex : WORD -> "sptr"
; usSubsetFormat : WORD -> "sptr"
; usSubsetLanguage : WORD -> "sptr"
; usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM -> "sptr"
; usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING -> "sptr"
; pusSubsetKeepList : WORD* -> "sptr"
; usSubsetListCount : WORD -> "sptr"
; lpfnAllocate : CFP_ALLOCPROC -> "sptr"
; lpfnReAllocate : CFP_REALLOCPROC -> "sptr"
; lpfnFree : CFP_FREEPROC -> "sptr"
; lpvReserved : void* in/out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "FONTSUB.dll" #cfunc global CreateFontPackage "CreateFontPackage" var, int, var, var, var, int, int, int, int, int, int, var, int, sptr, sptr, sptr, sptr ; res = CreateFontPackage(puchSrcBuffer, ulSrcBufferSize, ppuchFontPackageBuffer, pulFontPackageBufferSize, pulBytesWritten, usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, pusSubsetKeepList, usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved) ; puchSrcBuffer : BYTE* -> "var" ; ulSrcBufferSize : DWORD -> "int" ; ppuchFontPackageBuffer : BYTE** in/out -> "var" ; pulFontPackageBufferSize : DWORD* in/out -> "var" ; pulBytesWritten : DWORD* in/out -> "var" ; usFlag : WORD -> "int" ; usTTCIndex : WORD -> "int" ; usSubsetFormat : WORD -> "int" ; usSubsetLanguage : WORD -> "int" ; usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM -> "int" ; usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING -> "int" ; pusSubsetKeepList : WORD* -> "var" ; usSubsetListCount : WORD -> "int" ; lpfnAllocate : CFP_ALLOCPROC -> "sptr" ; lpfnReAllocate : CFP_REALLOCPROC -> "sptr" ; lpfnFree : CFP_FREEPROC -> "sptr" ; lpvReserved : void* in/out -> "sptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "FONTSUB.dll" #cfunc global CreateFontPackage "CreateFontPackage" sptr, int, sptr, sptr, sptr, int, int, int, int, int, int, sptr, int, sptr, sptr, sptr, sptr ; res = CreateFontPackage(varptr(puchSrcBuffer), ulSrcBufferSize, varptr(ppuchFontPackageBuffer), varptr(pulFontPackageBufferSize), varptr(pulBytesWritten), usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, varptr(pusSubsetKeepList), usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved) ; puchSrcBuffer : BYTE* -> "sptr" ; ulSrcBufferSize : DWORD -> "int" ; ppuchFontPackageBuffer : BYTE** in/out -> "sptr" ; pulFontPackageBufferSize : DWORD* in/out -> "sptr" ; pulBytesWritten : DWORD* in/out -> "sptr" ; usFlag : WORD -> "int" ; usTTCIndex : WORD -> "int" ; usSubsetFormat : WORD -> "int" ; usSubsetLanguage : WORD -> "int" ; usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM -> "int" ; usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING -> "int" ; pusSubsetKeepList : WORD* -> "sptr" ; usSubsetListCount : WORD -> "int" ; lpfnAllocate : CFP_ALLOCPROC -> "sptr" ; lpfnReAllocate : CFP_REALLOCPROC -> "sptr" ; lpfnFree : CFP_FREEPROC -> "sptr" ; lpvReserved : void* in/out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; DWORD CreateFontPackage(BYTE* puchSrcBuffer, DWORD ulSrcBufferSize, BYTE** ppuchFontPackageBuffer, DWORD* pulFontPackageBufferSize, DWORD* pulBytesWritten, WORD usFlag, WORD usTTCIndex, WORD usSubsetFormat, WORD usSubsetLanguage, CREATE_FONT_PACKAGE_SUBSET_PLATFORM usSubsetPlatform, CREATE_FONT_PACKAGE_SUBSET_ENCODING usSubsetEncoding, WORD* pusSubsetKeepList, WORD usSubsetListCount, CFP_ALLOCPROC lpfnAllocate, CFP_REALLOCPROC lpfnReAllocate, CFP_FREEPROC lpfnFree, void* lpvReserved) #uselib "FONTSUB.dll" #cfunc global CreateFontPackage "CreateFontPackage" var, int, var, var, var, int, int, int, int, int, int, var, int, intptr, intptr, intptr, intptr ; res = CreateFontPackage(puchSrcBuffer, ulSrcBufferSize, ppuchFontPackageBuffer, pulFontPackageBufferSize, pulBytesWritten, usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, pusSubsetKeepList, usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved) ; puchSrcBuffer : BYTE* -> "var" ; ulSrcBufferSize : DWORD -> "int" ; ppuchFontPackageBuffer : BYTE** in/out -> "var" ; pulFontPackageBufferSize : DWORD* in/out -> "var" ; pulBytesWritten : DWORD* in/out -> "var" ; usFlag : WORD -> "int" ; usTTCIndex : WORD -> "int" ; usSubsetFormat : WORD -> "int" ; usSubsetLanguage : WORD -> "int" ; usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM -> "int" ; usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING -> "int" ; pusSubsetKeepList : WORD* -> "var" ; usSubsetListCount : WORD -> "int" ; lpfnAllocate : CFP_ALLOCPROC -> "intptr" ; lpfnReAllocate : CFP_REALLOCPROC -> "intptr" ; lpfnFree : CFP_FREEPROC -> "intptr" ; lpvReserved : void* in/out -> "intptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; DWORD CreateFontPackage(BYTE* puchSrcBuffer, DWORD ulSrcBufferSize, BYTE** ppuchFontPackageBuffer, DWORD* pulFontPackageBufferSize, DWORD* pulBytesWritten, WORD usFlag, WORD usTTCIndex, WORD usSubsetFormat, WORD usSubsetLanguage, CREATE_FONT_PACKAGE_SUBSET_PLATFORM usSubsetPlatform, CREATE_FONT_PACKAGE_SUBSET_ENCODING usSubsetEncoding, WORD* pusSubsetKeepList, WORD usSubsetListCount, CFP_ALLOCPROC lpfnAllocate, CFP_REALLOCPROC lpfnReAllocate, CFP_FREEPROC lpfnFree, void* lpvReserved) #uselib "FONTSUB.dll" #cfunc global CreateFontPackage "CreateFontPackage" intptr, int, intptr, intptr, intptr, int, int, int, int, int, int, intptr, int, intptr, intptr, intptr, intptr ; res = CreateFontPackage(varptr(puchSrcBuffer), ulSrcBufferSize, varptr(ppuchFontPackageBuffer), varptr(pulFontPackageBufferSize), varptr(pulBytesWritten), usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, varptr(pusSubsetKeepList), usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved) ; puchSrcBuffer : BYTE* -> "intptr" ; ulSrcBufferSize : DWORD -> "int" ; ppuchFontPackageBuffer : BYTE** in/out -> "intptr" ; pulFontPackageBufferSize : DWORD* in/out -> "intptr" ; pulBytesWritten : DWORD* in/out -> "intptr" ; usFlag : WORD -> "int" ; usTTCIndex : WORD -> "int" ; usSubsetFormat : WORD -> "int" ; usSubsetLanguage : WORD -> "int" ; usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM -> "int" ; usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING -> "int" ; pusSubsetKeepList : WORD* -> "intptr" ; usSubsetListCount : WORD -> "int" ; lpfnAllocate : CFP_ALLOCPROC -> "intptr" ; lpfnReAllocate : CFP_REALLOCPROC -> "intptr" ; lpfnFree : CFP_FREEPROC -> "intptr" ; lpvReserved : void* in/out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
fontsub = windows.NewLazySystemDLL("FONTSUB.dll")
procCreateFontPackage = fontsub.NewProc("CreateFontPackage")
)
// puchSrcBuffer (BYTE*), ulSrcBufferSize (DWORD), ppuchFontPackageBuffer (BYTE** in/out), pulFontPackageBufferSize (DWORD* in/out), pulBytesWritten (DWORD* in/out), usFlag (WORD), usTTCIndex (WORD), usSubsetFormat (WORD), usSubsetLanguage (WORD), usSubsetPlatform (CREATE_FONT_PACKAGE_SUBSET_PLATFORM), usSubsetEncoding (CREATE_FONT_PACKAGE_SUBSET_ENCODING), pusSubsetKeepList (WORD*), usSubsetListCount (WORD), lpfnAllocate (CFP_ALLOCPROC), lpfnReAllocate (CFP_REALLOCPROC), lpfnFree (CFP_FREEPROC), lpvReserved (void* in/out)
r1, _, err := procCreateFontPackage.Call(
uintptr(puchSrcBuffer),
uintptr(ulSrcBufferSize),
uintptr(ppuchFontPackageBuffer),
uintptr(pulFontPackageBufferSize),
uintptr(pulBytesWritten),
uintptr(usFlag),
uintptr(usTTCIndex),
uintptr(usSubsetFormat),
uintptr(usSubsetLanguage),
uintptr(usSubsetPlatform),
uintptr(usSubsetEncoding),
uintptr(pusSubsetKeepList),
uintptr(usSubsetListCount),
uintptr(lpfnAllocate),
uintptr(lpfnReAllocate),
uintptr(lpfnFree),
uintptr(lpvReserved),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // DWORDfunction CreateFontPackage(
puchSrcBuffer: Pointer; // BYTE*
ulSrcBufferSize: DWORD; // DWORD
ppuchFontPackageBuffer: Pointer; // BYTE** in/out
pulFontPackageBufferSize: Pointer; // DWORD* in/out
pulBytesWritten: Pointer; // DWORD* in/out
usFlag: Word; // WORD
usTTCIndex: Word; // WORD
usSubsetFormat: Word; // WORD
usSubsetLanguage: Word; // WORD
usSubsetPlatform: Smallint; // CREATE_FONT_PACKAGE_SUBSET_PLATFORM
usSubsetEncoding: Smallint; // CREATE_FONT_PACKAGE_SUBSET_ENCODING
pusSubsetKeepList: Pointer; // WORD*
usSubsetListCount: Word; // WORD
lpfnAllocate: Pointer; // CFP_ALLOCPROC
lpfnReAllocate: Pointer; // CFP_REALLOCPROC
lpfnFree: Pointer; // CFP_FREEPROC
lpvReserved: Pointer // void* in/out
): DWORD; cdecl;
external 'FONTSUB.dll' name 'CreateFontPackage';result := DllCall("FONTSUB\CreateFontPackage"
, "Ptr", puchSrcBuffer ; BYTE*
, "UInt", ulSrcBufferSize ; DWORD
, "Ptr", ppuchFontPackageBuffer ; BYTE** in/out
, "Ptr", pulFontPackageBufferSize ; DWORD* in/out
, "Ptr", pulBytesWritten ; DWORD* in/out
, "UShort", usFlag ; WORD
, "UShort", usTTCIndex ; WORD
, "UShort", usSubsetFormat ; WORD
, "UShort", usSubsetLanguage ; WORD
, "Short", usSubsetPlatform ; CREATE_FONT_PACKAGE_SUBSET_PLATFORM
, "Short", usSubsetEncoding ; CREATE_FONT_PACKAGE_SUBSET_ENCODING
, "Ptr", pusSubsetKeepList ; WORD*
, "UShort", usSubsetListCount ; WORD
, "Ptr", lpfnAllocate ; CFP_ALLOCPROC
, "Ptr", lpfnReAllocate ; CFP_REALLOCPROC
, "Ptr", lpfnFree ; CFP_FREEPROC
, "Ptr", lpvReserved ; void* in/out
, "Cdecl UInt") ; return: DWORD●CreateFontPackage(puchSrcBuffer, ulSrcBufferSize, ppuchFontPackageBuffer, pulFontPackageBufferSize, pulBytesWritten, usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, pusSubsetKeepList, usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved) = DLL("FONTSUB.dll", "dword CreateFontPackage(void*, dword, void*, void*, void*, int, int, int, int, int, int, void*, int, void*, void*, void*, void*)")
# 呼び出し: CreateFontPackage(puchSrcBuffer, ulSrcBufferSize, ppuchFontPackageBuffer, pulFontPackageBufferSize, pulBytesWritten, usFlag, usTTCIndex, usSubsetFormat, usSubsetLanguage, usSubsetPlatform, usSubsetEncoding, pusSubsetKeepList, usSubsetListCount, lpfnAllocate, lpfnReAllocate, lpfnFree, lpvReserved)
# puchSrcBuffer : BYTE* -> "void*"
# ulSrcBufferSize : DWORD -> "dword"
# ppuchFontPackageBuffer : BYTE** in/out -> "void*"
# pulFontPackageBufferSize : DWORD* in/out -> "void*"
# pulBytesWritten : DWORD* in/out -> "void*"
# usFlag : WORD -> "int"
# usTTCIndex : WORD -> "int"
# usSubsetFormat : WORD -> "int"
# usSubsetLanguage : WORD -> "int"
# usSubsetPlatform : CREATE_FONT_PACKAGE_SUBSET_PLATFORM -> "int"
# usSubsetEncoding : CREATE_FONT_PACKAGE_SUBSET_ENCODING -> "int"
# pusSubsetKeepList : WORD* -> "void*"
# usSubsetListCount : WORD -> "int"
# lpfnAllocate : CFP_ALLOCPROC -> "void*"
# lpfnReAllocate : CFP_REALLOCPROC -> "void*"
# lpfnFree : CFP_FREEPROC -> "void*"
# lpvReserved : void* in/out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。
# ※cdecl関数。DLL()宣言はstdcall前提。cdeclは EXEC_PTR(`cdecl`,…) を使用。