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