Acerca del modelo de objetos de texto
El modelo de objetos de texto (TOM) define un conjunto de interfaces de manipulación de texto que se admiten en distintos grados por varias soluciones de texto de Microsoft, incluido el control de edición enriquecida. En este tema se proporciona información general de alto nivel de TOM. Se describen los temas siguientes.
- Objetos tom versión 2
- Convenciones de interfaz de TOM
- El tipo tomBool
- Compilación matemática y compilación hacia abajo
- TOM RTF
- Buscar texto enriquecido
- Accesibilidad de TOM
- Juegos de coincidencias de caracteres
Objetos tom versión 2
TOM versión 2 (TOM 2) amplía el modelo de objetos de texto original; las nuevas interfaces se derivan de las antiguas. La API de TOM actualizada incluye compatibilidad con las nuevas propiedades de formato de caracteres y párrafos, un modelo de tabla, una selección múltiple y compatibilidad con objetos insertados para matemáticas y ruby.
El objeto TOM 2 de nivel superior se define mediante la interfaz ITextDocument2 , que tiene métodos para crear y recuperar objetos más bajos en la jerarquía de objetos. Para un procesamiento simple de texto sin formato, puede obtener un objeto ITextRange2 de un objeto ITextDocument2 y hacer la mayoría de todo con eso. Si necesita agregar formato de texto enriquecido, puede obtener objetos ITextFont2 e ITextPara2 de un objeto ITextRange2 . ITextFont2 proporciona el equivalente de programación del cuadro de diálogo de fuente de formato de Microsoft Word y ITextPara2 proporciona el equivalente del cuadro de diálogo de Word párrafo de formato.
Además de estos tres objetos de nivel inferior, TOM 2 tiene un objeto de selección (ITextSelection2), que es un objeto ITextRange2 con resaltado de selección y algunos métodos orientados a la interfaz de usuario.
Los objetos de selección y rango incluyen métodos orientados a la pantalla que permiten a los programas examinar texto en pantalla o texto que se podría desplazar a la pantalla. Estas funcionalidades ayudan a que el texto sea accesible para las personas con discapacidad visual, por ejemplo.
Cada interfaz que tiene el sufijo 2 hereda de la interfaz correspondiente sin el sufijo 2. Por ejemplo, ITextDocument2 hereda de ITextDocument.
Los objetos TOM 2 tienen la siguiente jerarquía.
ITextDocument2 Top-level editing object
ITextRange2 Primary text interface: a range of text
ITextFont2 Character-attribute interface
ITextPara2 Paragraph-attribute interface
ITextRow Table interface
ITextSelection2 Screen highlighted text range
ITextRange2 Selection inherits all range methods
ITextDisplays Displays collection (not yet defined)
ITextStrings Rich-text strings collection
ITextStoryRanges2 Enumerator for stories in document
Un objeto ITextDocument2 describe uno o varios intervalos contiguos de texto denominados historias. Los casos representan varias partes de un documento, como el texto principal del documento, los encabezados y los pies de página, las notas al pie, las anotaciones y los paneles de arañazos de texto enriquecido. Se usa un artículo de relleno temporal al traducir entre expresiones matemáticas con formato lineal y un formulario integrado. También se usa un artículo de panel temporal al guardar el contenido de un intervalo que es el origen de copia actual cuando el contenido está a punto de cambiarse.
Un objeto ITextRange2 se define mediante sus desplazamientos de posición de carácter inicial y final y un objeto story. No existe independientemente de su objeto de artículo primario, aunque su texto se puede copiar en el Portapapeles o en otros destinos. Un objeto de intervalo de texto es diferente de la hoja de cálculo y otros objetos de rango, definidos por otros tipos de desplazamientos; por ejemplo, fila/columna o posición de gráficos (x, y). Un objeto de intervalo de texto puede modificarse de varias maneras, puede devolver un duplicado de sí mismo y se puede comando para copiar sus posiciones de carácter inicial y final y su puntero de historia a la selección actual.
No se necesita un objeto story explícito, ya que siempre se puede crear un objeto ITextRange para representar cualquier artículo determinado. En concreto, el objeto ITextDocument puede crear un objeto ITextStoryRanges para enumerar las historias del documento en términos de intervalos con valores de posición de carácter inicial y final que describen historias completas (como, 0 y tomForward).
Con un objeto ITextStoryRanges2 , no se necesita un objeto story explícito, ya que cada artículo se describe mediante un objeto ITextRange2 . En concreto, el objeto ITextDocument2 puede crear un objeto ITextStoryRanges2 para enumerar los casos del documento en términos de intervalos con valores de posición de carácter inicial y final que describen historias completas (como, 0 y tomForward).
La interfaz ITextRow junto con los métodos ITextRange::Move e ITextRange::Expand proporcionan la capacidad de insertar, consultar y cambiar tablas.
Convenciones de interfaz de TOM
Todos los métodos TOM devuelven valores HRESULT . En general, los métodos TOM devuelven los siguientes valores estándar.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (igual que S_OK)
- S_FALSE
Tenga en cuenta que si se elimina la instancia de edición asociada a un objeto TOM como ITextRange , el objeto TOM se vuelve inútil y todos sus métodos devuelven CO_E_RELEASED.
Además de los valores devueltos HRESULT , muchos métodos incluyen parámetros out, que son punteros que se usan para devolver valores. Para todas las interfaces, debe comprobar todos los parámetros de puntero para asegurarse de que no son cero antes de usarlos. Si pasa un valor NULL a un método que requiere un puntero válido, el método devuelve E_INVALIDARG. Se omiten los punteros de salida opcionales con valores NULL.
Use métodos con prefijos Get y Set para obtener y establecer propiedades. Las variables booleanas usan tomFalse (0) para FALSE y tomTrue (-1) para TRUE.
Las constantes TOM se definen en el tipo de enumeración tomConstants y comienzan con el prefijo tom, por ejemplo tomWord.
El tipo tomBool
Muchos métodos tom usan un tipo especial de variable denominada "tomBool" para atributos de texto enriquecido que tienen estados binarios. El tipo tomBool es diferente del tipo booleano porque puede tomar cuatro valores: tomTrue, tomFalse, tomToggle y tomUndefined. Los valores tomTrue y tomFalse indican true y false. El valor tomToggle se usa para alternar una propiedad. El valor tomUndefined , más tradicionalmente denominado NINCH, es un valor especial sin entrada, sin cambio que funciona con longs, floats y COLORREFs. En el caso de las cadenas, tomUndefined (o NINCH) se representa mediante la cadena null. En el caso de las operaciones de configuración de propiedades, el uso de tomUndefined no cambia la propiedad de destino. En el caso de las operaciones de obtención de propiedades, tomUndefined significa que los caracteres del intervalo tienen valores diferentes (proporciona la casilla atenuada en los cuadros de diálogo de propiedades).
Compilación matemática y compilación hacia abajo
Puede usar el método ITextRange2::BuildUpMath para convertir expresiones matemáticas con formato lineal en versiones integradas. El método ITextRange2::Linearize realiza la conversión opuesta, denominada linealización o compilación, para convertir versiones integradas de expresiones matemáticas en formato lineal. La funcionalidad de compilación matemática es útil cuando necesita exportar texto sin formato o para habilitar determinados tipos de edición.
TOM RTF
En TOM, el intercambio de texto enriquecido se puede realizar mediante conjuntos de llamadas de método explícitas o transferencias de texto enriquecido en formato de texto enriquecido (RTF). En esta sección se proporcionan tablas de palabras de control RTF para las propiedades de párrafo y para las propiedades de caracteres.
Palabras de control de párrafo de TOM RTF
Palabra de control | Significado |
---|---|
\ fi n | Sangría de primera línea (el valor predeterminado es cero). |
\Mantener | Mantenga intacto el párrafo. |
\ keepn | Siga con el párrafo siguiente. |
\ li n | Sangría izquierda (el valor predeterminado es cero). |
\ noline | Sin numeración de líneas. |
\ nowidctlpar | Desactive el control viudo/huérfano. |
\ pagebb | Página de salto antes del párrafo. |
\ par | Nuevo párrafo. |
\Pard | Restablece las propiedades de párrafo predeterminadas. |
\Ql | Alineado a la izquierda (valor predeterminado). |
\Qr | Alineado a la derecha. |
\Qj | Justificado. |
\Qc | Centrado. |
\ ri n | Sangría derecha (el valor predeterminado es cero). |
\ s n | Estilo n. |
\ sa n | Espacio después (el valor predeterminado es cero). |
\ sb n | Espacio antes (el valor predeterminado es cero). |
\ sl n | Si falta o si n=1000, el espaciado de línea viene determinado por el carácter más alto de la línea (espaciado de una sola línea); si se usa n> cero, se usa al menos este tamaño; si n es < cero, exactamente | n| se usa. El espaciado de líneas es espaciado de varias líneas si sigue \ slmult 1. |
\ slmult m | Sigue \ sl. m = cero: interlineado al menos o exactamente como se describe en \ sl n. m = 1: interlineado = n/240 veces espaciado de una sola línea. |
\ tb n | Posición de tabulación de barra, en twips, desde el margen izquierdo. |
\ tldot | Puntos de guía de tabulación. |
\ tleq | Signo igual de marcador de tabulación. |
\ tlhyph | Guiones del líder de tabulación. |
\ tlth | Línea gruesa de la guía de tabulación. |
\ tlul | Subrayado del marcador de tabulación. |
\Tqc | Pestaña Centrada. |
\ tqdec | Tabulación decimal. |
\ tqr | Pestaña Vaciar a la derecha. |
\ tx n | Posición de tabulación, en twips, desde el margen izquierdo. |
Palabras de control de formato de caracteres DE TOM RTF
Palabra de control | Significado |
---|---|
\ animación n | Establece el tipo de animación en n. |
\B | Negrita. |
\Casquillos | Todas las mayúsculas. |
\ cf n | Color de primer plano (el valor predeterminado es tomAutocolor). |
\ cs n | Estilo de carácter n. |
\ dn n | Posición de subíndice en puntos medio (el valor predeterminado es 6). |
\Embo | Relieve. |
\ f n | Número de fuente, n hace referencia a una entrada de la tabla de fuentes. |
\ fs n | Tamaño de fuente en puntos medio (el valor predeterminado es 24). |
\ highlight n | Color de fondo (el valor predeterminado es tomAutocolor). |
\ i | Cursiva. |
\ impr | Impresión. |
\ lang n | Aplica un idioma a un carácter. n es un número correspondiente a un idioma. La palabra de control \ sin formato restablece la propiedad de idioma al idioma definido por \ deflang n en las propiedades del documento. |
\ nosupersub | Desactiva el superíndice o subíndice. |
\ outl | Contorno. |
\Llano | Restablece las propiedades de formato de caracteres a un valor predeterminado definido por la aplicación. Las propiedades de formato de caracteres asociadas (descritas en la sección Propiedades de caracteres asociadas en la especificación RTF) también se restablecen. |
\ scaps | Pequeñas mayúsculas. |
\Shad | Sombra. |
\Huelga | Tachado. |
\Sub | Aplica subíndice al texto y reduce el tamaño del punto según la información de fuente. |
\fenomenal | Aplica superíndice al texto y reduce el tamaño del punto según la información de fuente. |
\Ul | Subrayado continuo. \ ul0 desactiva toda la inserción. |
\Uld | Subrayado punteado. |
\ uldb | Subrayado doble. |
\ ulnone | Detiene toda la inserción. |
\ ulw | Word subrayado. |
\ up n | Posición de superíndice en puntos medio (el valor predeterminado es 6). |
\V | Texto oculto. |
Búsqueda de texto enriquecido
Puede usar métodos TOM para buscar texto enriquecido tal y como se define en un intervalo de texto. Encontrar este texto enriquecido exactamente es necesario a menudo en el procesamiento de texto, aunque nunca se ha cumplido en un procesador de texto "lo que ves es lo que obtienes" (WYSIWYG). Existe claramente un dominio mayor de coincidencia de texto enriquecido que permite omitir algunas propiedades de formato de caracteres (o incluir el formato de párrafo o el contenido del objeto), pero estas generalizaciones están fuera del ámbito de esta sección.
Un propósito para esta funcionalidad es usar un cuadro de diálogo Buscar texto enriquecido para definir el texto enriquecido que desea buscar en un documento. El cuadro de diálogo se implementaría mediante un control de edición enriquecido y los métodos TOM se usarían para llevar a cabo la búsqueda a través del documento. Puede copiar el texto enriquecido deseado del documento en el cuadro de diálogo Buscar o escribirlo y darle formato directamente en el cuadro de diálogo Buscar .
En el ejemplo siguiente se muestra cómo usar métodos TOM para buscar texto que contenga combinaciones de formato de caracteres exactos. El algoritmo busca el texto sin formato en el intervalo de coincidencias, que se denomina pr1
. Si se encuentra el texto sin formato, un intervalo de prueba apunta a él, que se denomina pr2
. A continuación, se usan dos intervalos de puntos de inserción (prip1
y prip2
) para recorrer el intervalo de prueba que compara su formato de caracteres con el de pr1
. Si coinciden exactamente, el intervalo de entrada (dado por ppr
) se actualiza para que apunte al texto del intervalo de prueba y la función devuelve el recuento de caracteres del intervalo coincidente. Dos objetos ITextFont y pf1
pf2
, se usan en la comparación de formato de caracteres. Se adjuntan a los intervalos prip1
de puntos de inserción y prip2
.
LONG FindRichText (
ITextRange **ppr, // Ptr to range to search
ITextRange *pr1) // Range with rich text to find
{
BSTR bstr; // pr1 plain-text to search for
LONG cch; // Text string count
LONG cch1, cch2; // tomCharFormat run char counts
LONG cchMatch = 0; // Nothing matched yet
LONG cp; // Handy char position
LONG cpFirst1; // pr1 cpFirst
LONG cpFirst2; // pr2 cpFirst
ITextFont * pf1, *pf // Fonts corresponding to IPs prip1 and prip2
ITextRange *pr2; // Range duplicate to search with
ITextRange *prip1, *prip // Insertion points to walk pr1, pr2
if (!ppr || !*ppr || !pr1)
return E_INVALIDARG;
// Initialize range and font objects used in search
if ((*ppr)->GetDuplicate(&pr2) != NOERROR ||
pr1->GetDuplicate(&prip1) != NOERROR ||
pr2->GetDuplicate(&prip2) != NOERROR ||
prip1->GetFont(&pf1) != NOERROR ||
prip2->GetFont(&pf2) != NOERROR ||
pr1->GetText(&bstr) != NOERROR )
{
return E_OUTOFMEMORY;
}
pr1->GetStart(&cpFirst1);
// Keep searching till rich text is matched or no more plain-text hits
while(!cchMatch && pr2->FindText(bstr, tomForward, 0, &cch) == NOERROR)
{
pr2->GetStart(&cpFirst2); // pr2 is a new trial range
prip1->SetRange(cpFirst1, cpFirst1); // Set up IPs to scan match
prip2->SetRange(cpFirst2, cpFirst2); // and trial ranges
while(cch > 0 &&
pf1->IsEqual(pf2, NULL) == NOERROR) // Walk match & trial ranges
{ // together comparing font
prip1->GetStart(&cch1); // properties
prip1->Move(tomCharFormat, 1, NULL);
prip1->GetStart(&cp);
cch1 = cp - cch1; // cch of next match font run
prip2->GetStart(&cch2);
prip2->Move(tomCharFormat, 1, NULL);
prip2->GetStart(&cp);
cch2 = cp - cch2; // cch of next trial font run
if(cch1 < cch) // There is more to compare
{
if(cch1 != cch2) // Different run lengths:
break; // no formatting match
cch = cch - cch1; // Matched format run
}
else if(cch2 < cch) // Trial range format run too
break; // short
else // Both match and trial runs
{ // reach at least to match
pr2->GetEnd(&cp); // text end: rich-text match
(*ppr)->SetRange(cpFirst2, cp) // Set input range to hit
cchMatch = cp - cpFirst2; // coordinates and return
break; // length of matched string
}
}
}
pr2->Release();
prip1->Release();
prip2->Release();
pf1->Release();
pf2->Release();
SysFreeString(bstr);
return cchMatch;
}
Accesibilidad de TOM
TOM proporciona compatibilidad de accesibilidad a través de las interfaces ITextSelection e ITextRange . En esta sección se describen los métodos que son útiles para la accesibilidad, así como cómo un programa puede determinar la posición de pantalla x e y de un objeto.
Dado que los programas de accesibilidad basados en la interfaz de usuario normalmente funcionan con la pantalla y el mouse, una preocupación común es encontrar la interfaz ITextDocument correspondiente para la ubicación actual del mouse (en coordenadas de pantalla). En las secciones siguientes se presentan dos maneras de determinar la interfaz adecuada:
- A través de la tabla de objetos en ejecución
- A través del mensaje EM_GETOLEINTERFACE , que funciona para instancias de edición enriquecidas en ventanas, siempre que el cliente esté en el mismo espacio de proceso (no se necesita serialización )
Para obtener más información, consulte la especificación de accesibilidad activa de Microsoft. Después de obtener un objeto desde una posición de pantalla, puede usar para una interfaz ITextDocument y llamar al método RangeFromPoint para obtener un objeto de rango vacío en la cp correspondiente a la posición de la pantalla.
Interfaz de la tabla de objetos en ejecución
Una tabla de objetos en ejecución (ROT) indica qué instancias de objeto están activas. Al consultar esta tabla, puede acelerar el proceso de conexión de un cliente a un objeto cuando el objeto ya se está ejecutando. Antes de que los programas puedan acceder a las interfaces TOM a través de la tabla de objetos en ejecución, una instancia de TOM con una ventana debe registrarse en el ROT mediante un moniker. El moniker se construye a partir de una cadena que contiene el valor hexadecimal de su HWND. En el ejemplo de código siguiente se muestra cómo hacerlo.
// This TOM implementation code is executed when a new windowed
// instance starts up.
// Variables with leading underscores are members of this class.
HRESULT hr;
OLECHAR szBuf[10]; // Place to put moniker
MONIKER *pmk;
hr = StringCchPrintf(szBuff, 10, "%x", _hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
OleStdRegisterAsRunning(this, pmk, &_dwROTcookie);
....................
// Accessibility Client:
// Find hwnd for window pointed to by mouse cursor.
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
// Look in ROT (running object table) for an object attached to hwnd
hr = StringCchPrintf(szBuff, 10, "%x", hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
CreateBindContext(0, &pbc);
pmk->BindToObject(pbc, NULL, IID_ITextDocument, &pDoc);
pbc->Release();
if( pDoc )
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ...now do whatever with the range pRange
}
Interfaz de mensajes de ventana
El mensaje EM_GETOLEINTERFACE proporciona otra manera de obtener una interfaz IUnknown para un objeto en una posición de pantalla determinada. Como se describe en Interfaz de la tabla de objetos en ejecución, obtendrá un HWND para la posición de la pantalla y, a continuación, enviará este mensaje a ese HWND. El mensaje de EM_GETOLEINTERFACE es específico de edición enriquecida y devuelve un puntero a una interfaz IRichEditOle en la variable dirigida por lParam.
Propina Si se devuelve un puntero (asegúrese de establecer el objeto en el que lParam apunta a NULL antes de enviar el mensaje), puede llamar a su método IUnknown::QueryInterface para obtener una interfaz ITextDocument . En el ejemplo de código siguiente se muestra este método.
HWND hwnd;
ITextDocument *pDoc;
ITextRange *pRange;
POINT pt;
IUnknown *pUnk = NULL;
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
SendMessage(hwnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
if(pUnk &&
pUnk->QueryInterface(IID_ITextDocument, &pDoc) == NOERROR)
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ... continue with rest of program
}
Métodos orientados a accesibilidad
Algunos métodos TOM son especialmente útiles para navegar por la pantalla, mientras que otros métodos TOM mejoran lo que puede hacer cuando llega a lugares de interés. En la tabla siguiente se describen los métodos más útiles.
Método | Cómo promueve la accesibilidad |
---|---|
GetSelection | Este método obtiene la selección activa que se puede usar para diversos propósitos orientados a la vista, como resaltar texto y desplazarse. |
RangeFromPoint | Cuando se usa en una selección activa, se garantiza que este método obtiene un intervalo asociado a una vista determinada. |
Expanda | Amplía un intervalo de texto para que las unidades parciales que contenga estén completamente contenidas. Por ejemplo, Expand(tomWindow) expande el intervalo para incluir la parte visible del artículo del intervalo. |
GetDuplicate | Cuando se usa en una selección activa, se garantiza que este método obtiene un intervalo asociado a una vista determinada. Vea la descripción de RangeFromPoint. |
GetPoint | Obtiene las coordenadas de pantalla para la posición del carácter inicial o final en el intervalo de texto. |
ScrollIntoView | Desplaza un intervalo de texto a la vista. |
Ajuste | Selecciona texto en o hacia arriba a través de un punto especificado. |
Juegos de coincidencias de caracteres
El parámetro variant de los distintos métodos Move* de ITextRange, como MoveWhile y MoveUntil, puede tomar una cadena explícita o un índice de juego de coincidencia de caracteres de 32 bits. Los índices se definen mediante intervalos Unicode o conjuntos de caracteres GetStringTypeEx . El intervalo Unicode que comienza en n y de longitud l (< 32768) lo da el índice n + (l << 16) + 0x80000000. Por ejemplo, las letras griegas básicas se definen mediante CR_Greek = 0x805f0370 y los caracteres ASCII imprimibles se definen mediante CR_ASCIIPrint = 0x805e0020. Además, los métodos MoveWhile y MoveUntil permiten omitir rápidamente un intervalo de caracteres en cualquier juego de caracteres GetStringTypeEx o en un intervalo de caracteres que no esté en ninguno de estos juegos de caracteres.
Los conjuntos GetStringTypeEx se especifican mediante los valores de Ctype1, Ctype2 y Ctype3, y se definen de la siguiente manera.
Cset | Significado |
---|---|
Ctype1 | Combinación de tipos de CT_CTYPE1. |
Ctype2 + tomCType2 | Cualquier tipo de CT_CTYPE2. |
Ctype3 + tomCType3 | Combinación de tipos de CT_CTYPE3. |
En concreto, Ctype1 puede ser cualquier combinación de lo siguiente.
Nombre Ctype1 | Valor | Significado |
---|---|---|
C1_UPPER | 0x0001 | Mayúsculas. |
C1_LOWER | 0x0002 | Minúsculas. |
C1_DIGIT | 0x0004 | Dígitos decimales. |
C1_SPACE | 0x0008 | Caracteres de espacio. |
C1_PUNCT | 0x0010 | La puntuación. |
C1_CNTRL | 0x0020 | Caracteres de control. |
C1_BLANK | 0x0040 | Caracteres en blanco. |
C1_XDIGIT | 0x0080 | Dígitos hexadecimales. |
C1_ALPHA | 0x0100 | Cualquier carácter lingüístico (alfabético, allabario o ideográfico). |
C1_DEFINED | 0x0200 | Carácter definido, pero no uno de los otros tipos C1_*. |
Los tipos Ctype2 admiten el diseño adecuado del texto Unicode. Los atributos de dirección se asignan para que el algoritmo de diseño bidireccional estandarizado por Unicode genere resultados precisos. Estos tipos son mutuamente excluyentes. Para obtener más información sobre el uso de estos atributos, vea The Unicode Standard: Worldwide Character Encoding, Volumes 1 and 2, Addison-Wesley Publishing Company: 1991, 1992.
Nombre de CType2 | Valor | Significado |
---|---|---|
Fuerte: | ||
C2_LEFTTORIGHT | 0x1 | De izquierda a derecha. |
C2_RIGHTTOLEFT | 0x2 | De derecha a izquierda. |
Débil: | ||
C2_EUROPENUMBER | 0x3 | Número europeo, dígito europeo. |
C2_EUROPESEPARATOR | 0x4 | Separador numérico europeo. |
C2_EUROPETERMINATOR | 0x5 | Terminador numérico europeo. |
C2_ARABICNUMBER | 0x6 | Número árabe. |
C2_COMMONSEPARATOR | 0x7 | Separador numérico común. |
Neutral: | ||
C2_BLOCKSEPARATOR | 0x8 | Separador de bloques. |
C2_SEGMENTSEPARATOR | 0x9 | Separador de segmentos. |
C2_WHITESPACE | 0xA | Espacio en blanco. |
C2_OTHERNEUTRAL | 0xB | Otros neutrales. |
No aplicable: | ||
C2_NOTAPPLICABLE | 0x0 | Sin dirección implícita. |
Los tipos Ctype3 están diseñados para ser marcadores de posición para las extensiones de los tipos POSIX necesarios para el procesamiento de texto general o para las funciones estándar de la biblioteca de C.
Nombre de CType3 | Valor | Significado |
---|---|---|
C3_NONSPACING | 0x1 | Marca sin espaciado. |
C3_DIACRITIC | 0x2 | Marca de no espaciado diacrítico. |
C3_VOWELMARK | 0x4 | Marca de no espaciado vocal. |
C3_SYMBOL | 0x8 | Símbolo. |
C3_KATAKANA | 0x10 | Carácter Katakana. |
C3_HIRAGANA | 0x20 | Carácter Hiragana. |
C3_HALFWIDTH | 0x40 | Carácter de ancho medio. |
C3_FULLWIDTH | 0x80 | Carácter de ancho completo. |
C3_IDEOGRAPH | 0x100 | Carácter ideográfico. |
C3_KASHIDA | 0x200 | Carácter árabe Kashida. |
C3_ALPHA | 0x8000 | Todos los caracteres lingüísticos (alfabético, allabario e ideográfico). |
C3_NOTAPPLICABLE | 0x0 | No es aplicable. |
Un Kit de desarrollo de edición (EDK) podría incluir definiciones de índice pVar para los siguientes rangos descritos en el estándar Unicode.
Juego de caracteres | Intervalo Unicode | Juego de caracteres | Intervalo Unicode |
---|---|---|---|
ASCII | 0x0: 0x7f | ANSI | 0x0: 0xff |
ASCIIPrint | 0x20: 0x7e | Latin1 | 0x20: 0xff |
Latin1Supp | 0xa0: 0xff | LatinXA | 0x100: 0x17f |
LatinXB | 0x180: 0x24f | IPAX | 0x250: 0x2af |
SpaceMod | 0x2b0: 0x2ff | Combinar | 0x300: 0x36f |
Griego | 0x370: 0x3ff | BasicGreek | 0x370: 0x3cf |
GriegoSymbols | 0x3d0: 0x3ff | Cirílico | 0x400: 0x4ff |
Armenio | 0x530: 0x58f | Hebreo | 0x590: 0x5ff |
BasicHebrew | 0x5d0: 0x5ea | HebreoXA | 0x590: 0x5cf |
HebreoXB | 0x5eb: 0x5ff | Árabe | 0x600: 0x6ff |
BasicArabic | 0x600: 0x652 | ArabicX | 0x653: 0x6ff |
Devangari | 0x900: 0x97f | Bangla (anteriormente bengalí) | 0x980: 0x9ff |
Gurmukhi | 0xa00: 0xa7f | Gujarati | 0xa80: 0xaff |
Odia (anteriormente Oriya) | 0xb00: 0xb7f | Tamil | 0xb80: 0xbff |
Teluga | 0xc00: 0xc7f | Canarés | 0xc80: 0xcff |
Malayalam | 0xd00: 0xd7f | Tailandés | 0xe00: 0xe7f |
Lao | 0xe80: 0xeff | GeorgianX | 0x10a0: 0xa0cf |
BascGeorgian | 0x10d0: 0x10ff | Jamo | 0x1100: 0x11ff |
LatinXAdd | 0x1e00: 0x1eff | GreekX | 0x1f00: 0x1fff |
GenPunct | 0x2000: 0x206f | Superscript | 0x2070: 0x207f |
Subscript | 0x2080: 0x208f | SuperSubscript | 0x2070: 0x209f |
Moneda | 0x20a0: 0x20cf | CombMarkSym | 0x20d0: 0x20ff |
LetterLike | 0x2100: 0x214f | NumberForms | 0x2150: 0x218f |
Flechas | 0x2190: 0x21ff | MathOps | 0x2200: 0x22ff |
MiscTech | 0x2300: 0x23ff | CtrlPictures | 0x2400: 0x243f |
OptCharRecog | 0x2440: 0x245f | EnclAlphaNum | 0x2460: x24ff |
BoxDrawing | 0x2500: 0x257f | BlockElement | 0x2580: 0x259f |
GeometShapes | 0x25a0: 0x25ff | MiscSymbols | 0x2600: 0x26ff |
Dingbats | 0x2700: 0x27bf | CJKSymPunct | 0x3000: 0x303f |
Hiragana | 0x3040: 0x309f | Katakana | 0x30a0: 0x30ff |
Bopomofo | 0x3100: 0x312f | HangulJamo | 0x3130: 0x318f |
CJLMisc | 0x3190: 0x319f | EnclCJK | 0x3200: 0x32ff |
CJKCompatibl | 0x3300: 0x33ff | Han | 0x3400: 0xabff |
Hangul | 0xac00: 0xd7ff | UTF16Lead | 0xd800: 0xdbff |
UTF16Trail | 0xdc00: 0xdfff | PrivateUse | 0xe000: 0xf800 |
CJKCompIdeog | 0xf900: 0xfaff | AlphaPres | 0xfb00: 0xfb4f |
ArabicPresA | 0xfb50: 0xfdff | CombHalfMark | 0xfe20: 0xfe2f |
CJKCompForm | 0xfe30: 0xfe4f | SmallFormVar | 0xfe50: 0xfe6f |
ArabicPresB | 0xfe70: 0xfefe | HalfFullForm | 0xff00: 0xffef |
Especiales | 0xfff0: 0xfffd |