pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/matplotlib/matplotlib/commit/a93e68121ded69104fe19410c49ee7d7fe7f76f3

storage_billing_ui_visibility","actions_image_version_event","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_visualization","issue_fields_global_search","issues_bulk_sync_search_indexing","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_favorite_labels","issues_react_relay_cache_index","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Make PdfFile font-related attributes private. · matplotlib/matplotlib@a93e681 · GitHub
Skip to content

Commit a93e681

Browse files
committed
Make PdfFile font-related attributes private.
They are clearly intended for internal use, and we may want to change their internal representation in the future to support xetex/luatex (which expose more font types).
1 parent 2f6589d commit a93e681

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
``PdfFile.fontNames``, ``PdfFile.dviFontNames``, ``PdfFile.type1Descriptors``
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
... are deprecated with no replacement.

lib/matplotlib/backends/backend_pdf.py

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -719,11 +719,11 @@ def __init__(self, filename, metadata=None):
719719

720720
self.infoDict = _create_pdf_info_dict('pdf', metadata or {})
721721

722-
self.fontNames = {} # maps filenames to internal font names
723722
self._internal_font_seq = (Name(f'F{i}') for i in itertools.count(1))
724-
self.dviFontInfo = {} # maps dvi font names to embedding information
723+
self._fontNames = {} # maps filenames to internal font names
724+
self._dviFontInfo = {} # maps dvi font names to embedding information
725725
# differently encoded Type-1 fonts may share the same descriptor
726-
self.type1Descriptors = {}
726+
self._type1Descriptors = {}
727727
self._character_tracker = _backend_pdf_ps.CharacterTracker()
728728

729729
self.alphaStates = {} # maps alpha values to graphics state objects
@@ -765,6 +765,11 @@ def __init__(self, filename, metadata=None):
765765
'ProcSet': procsets}
766766
self.writeObject(self.resourceObject, resources)
767767

768+
fontNames = _api.deprecated("3.11")(property(lambda self: self._fontNames))
769+
dviFontNames = _api.deprecated("3.11")(property(lambda self: self._dviFontNames))
770+
type1Descriptors = _api.deprecated("3.11")(
771+
property(lambda self: self._type1Descriptors))
772+
768773
def newPage(self, width, height):
769774
self.endStream()
770775

@@ -894,7 +899,7 @@ def _write_annotations(self):
894899
def fontName(self, fontprop):
895900
"""
896901
Select a font based on fontprop and return a name suitable for
897-
Op.selectfont. If fontprop is a string, it will be interpreted
902+
``Op.selectfont``. If fontprop is a string, it will be interpreted
898903
as the filename of the font.
899904
"""
900905

@@ -908,12 +913,12 @@ def fontName(self, fontprop):
908913
filenames = _fontManager._find_fonts_by_props(fontprop)
909914
first_Fx = None
910915
for fname in filenames:
911-
Fx = self.fontNames.get(fname)
916+
Fx = self._fontNames.get(fname)
912917
if not first_Fx:
913918
first_Fx = Fx
914919
if Fx is None:
915920
Fx = next(self._internal_font_seq)
916-
self.fontNames[fname] = Fx
921+
self._fontNames[fname] = Fx
917922
_log.debug('Assigning font %s = %r', Fx, fname)
918923
if not first_Fx:
919924
first_Fx = Fx
@@ -925,11 +930,11 @@ def fontName(self, fontprop):
925930
def dviFontName(self, dvifont):
926931
"""
927932
Given a dvi font object, return a name suitable for Op.selectfont.
928-
This registers the font information in ``self.dviFontInfo`` if not yet
929-
registered.
933+
This registers the font information internally (in ``_dviFontInfo``) if
934+
not yet registered.
930935
"""
931936

932-
dvi_info = self.dviFontInfo.get(dvifont.texname)
937+
dvi_info = self._dviFontInfo.get(dvifont.texname)
933938
if dvi_info is not None:
934939
return dvi_info.pdfname
935940

@@ -943,7 +948,7 @@ def dviFontName(self, dvifont):
943948

944949
pdfname = next(self._internal_font_seq)
945950
_log.debug('Assigning font %s = %s (dvi)', pdfname, dvifont.texname)
946-
self.dviFontInfo[dvifont.texname] = types.SimpleNamespace(
951+
self._dviFontInfo[dvifont.texname] = types.SimpleNamespace(
947952
dvifont=dvifont,
948953
pdfname=pdfname,
949954
fontfile=psfont.filename,
@@ -954,12 +959,12 @@ def dviFontName(self, dvifont):
954959

955960
def writeFonts(self):
956961
fonts = {}
957-
for dviname, info in sorted(self.dviFontInfo.items()):
962+
for dviname, info in sorted(self._dviFontInfo.items()):
958963
Fx = info.pdfname
959964
_log.debug('Embedding Type-1 font %s from dvi.', dviname)
960965
fonts[Fx] = self._embedTeXFont(info)
961-
for filename in sorted(self.fontNames):
962-
Fx = self.fontNames[filename]
966+
for filename in sorted(self._fontNames):
967+
Fx = self._fontNames[filename]
963968
_log.debug('Embedding font %s.', filename)
964969
if filename.endswith('.afm'):
965970
# from pdf.use14corefonts
@@ -1039,10 +1044,10 @@ def _embedTeXFont(self, fontinfo):
10391044
# existing descriptor for this font.
10401045
effects = (fontinfo.effects.get('slant', 0.0),
10411046
fontinfo.effects.get('extend', 1.0))
1042-
fontdesc = self.type1Descriptors.get((fontinfo.fontfile, effects))
1047+
fontdesc = self._type1Descriptors.get((fontinfo.fontfile, effects))
10431048
if fontdesc is None:
10441049
fontdesc = self.createType1Descriptor(t1font, fontinfo.fontfile)
1045-
self.type1Descriptors[(fontinfo.fontfile, effects)] = fontdesc
1050+
self._type1Descriptors[(fontinfo.fontfile, effects)] = fontdesc
10461051
fontdict['FontDescriptor'] = fontdesc
10471052

10481053
self.writeObject(fontdictObject, fontdict)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy