Reconciliación de estados de apariencia de radio y casillas

Escribir un valor de campo de botón ahora reconcilia el estado /AS de cada widget con la selección, y el aplanado reconcilia de nuevo antes de generar apariencias, de modo que un /AS Off obsoleto nunca puede ganar a un /V actualizado

Escrituras de valor

SetFormFieldValue y SetLoadedFormFieldValueByName recorren el campo (y sus /Kids) y seleccionan, en el diccionario de estados /AP /N de cada widget, el estado cuyo nombre es igual al /V heredado; cualquier otro widget retrocede a Off. Los hijos de radio que no llevan /V resuelven la selección mediante su cadena de padres

Aplanado

FlattenLoadedFormFields reconcilia cada destino antes de la generación de apariencias, de modo que los valores importados (FDF, XFDF) se aplanan al estado de casilla o radio correcto incluso cuando el documento se guardó por última vez con una selección diferente

Estabilidad de regeneración

EnsureLoadedFieldAppearanceStream preserva el nombre de estado activado existente de un diccionario de estados al regenerar apariencias de botón, de modo que un valor de exportación de radio nunca se renombra a un Yes genérico, y los hijos de radio sin diccionario de estados derivan su nombre de estado activado de su propio /T