├── .editorconfig
├── .eslintignore
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .nvmrc
├── LICENSE
├── README.md
├── admin
├── post-types
│ ├── certificate_templates.php
│ └── writepanels
│ │ ├── writepanel-certificate_data.php
│ │ ├── writepanel-certificate_image.php
│ │ ├── writepanel-course_data.php
│ │ └── writepanels-init.php
└── woothemes-sensei-certificate-templates-admin-init.php
├── assets
├── blocks
│ ├── index.js
│ └── view-certificate-link
│ │ ├── block.json
│ │ ├── index.js
│ │ └── view-certificate-link-edit.js
├── css
│ ├── admin.scss
│ └── frontend.scss
├── images
│ ├── certificate-logo.png
│ ├── certificate.png
│ ├── certificate_template.png
│ └── sensei_certificate_nograde.png
└── js
│ ├── admin.js
│ └── course.js
├── changelog.txt
├── classes
├── background-jobs
│ └── class-sensei-certificates-create-certificates.php
├── blocks
│ └── class-woothemes-sensei-certificates-view-certificate-link-block.php
├── class-sensei-certificate-data-cleaner.php
├── class-vip-tfpdf.php
├── class-woothemes-sensei-certificate-templates.php
├── class-woothemes-sensei-certificates-data-store.php
├── class-woothemes-sensei-certificates-dependency-checker.php
├── class-woothemes-sensei-certificates-tfpdf.php
├── class-woothemes-sensei-certificates-utils.php
├── class-woothemes-sensei-certificates.php
├── class-woothemes-sensei-pdf-certificate.php
└── tools
│ ├── class-sensei-certificates-tool-create-certificates.php
│ └── class-sensei-certificates-tool-create-default-example-template.php
├── composer.json
├── composer.lock
├── lang
├── sensei-certificates-de_DE.mo
├── sensei-certificates-de_DE.po
├── sensei-certificates-fr_FR.mo
├── sensei-certificates-fr_FR.po
├── sensei-certificates-hu_HU.mo
├── sensei-certificates-hu_HU.po
├── sensei-certificates-ru_RU.mo
├── sensei-certificates-ru_RU.po
└── sensei-certificates.pot
├── lib
└── tfpdf
│ ├── FPDFException.php
│ ├── font
│ ├── courier.php
│ ├── courierb.php
│ ├── courierbi.php
│ ├── courieri.php
│ ├── helvetica.php
│ ├── helveticab.php
│ ├── helveticabi.php
│ ├── helveticai.php
│ ├── symbol.php
│ ├── times.php
│ ├── timesb.php
│ ├── timesbi.php
│ ├── timesi.php
│ ├── unifont
│ │ ├── DejaVuSans-Bold.ttf
│ │ ├── DejaVuSans-BoldOblique.ttf
│ │ ├── DejaVuSans-ExtraLight.ttf
│ │ ├── DejaVuSans-Oblique.ttf
│ │ ├── DejaVuSans.ttf
│ │ ├── DejaVuSansCondensed-Bold.ttf
│ │ ├── DejaVuSansCondensed-BoldOblique.ttf
│ │ ├── DejaVuSansCondensed-Oblique.ttf
│ │ ├── DejaVuSansCondensed.ttf
│ │ ├── DejaVuSansMono-Bold.ttf
│ │ ├── DejaVuSansMono-BoldOblique.ttf
│ │ ├── DejaVuSansMono-Oblique.ttf
│ │ ├── DejaVuSansMono.ttf
│ │ ├── DejaVuSerif-Bold.ttf
│ │ ├── DejaVuSerif-BoldItalic.ttf
│ │ ├── DejaVuSerif-Italic.ttf
│ │ ├── DejaVuSerif.ttf
│ │ ├── DejaVuSerifCondensed-Bold.ttf
│ │ ├── DejaVuSerifCondensed-BoldItalic.ttf
│ │ ├── DejaVuSerifCondensed-Italic.ttf
│ │ ├── DejaVuSerifCondensed.ttf
│ │ ├── DejaVu_LICENSE.txt
│ │ ├── dejavusans-bold-character-width-127.php
│ │ ├── dejavusans-bold-character-widths.dat
│ │ ├── dejavusans-bold-font-metrics.php
│ │ ├── dejavusans-boldoblique-character-width-127.php
│ │ ├── dejavusans-boldoblique-character-widths.dat
│ │ ├── dejavusans-boldoblique-font-metrics.php
│ │ ├── dejavusans-character-width-127.php
│ │ ├── dejavusans-character-widths.dat
│ │ ├── dejavusans-extralight-character-width-127.php
│ │ ├── dejavusans-extralight-character-widths.dat
│ │ ├── dejavusans-extralight-font-metrics.php
│ │ ├── dejavusans-font-metrics.php
│ │ ├── dejavusans-oblique-character-width-127.php
│ │ ├── dejavusans-oblique-character-widths.dat
│ │ ├── dejavusans-oblique-font-metrics.php
│ │ ├── dejavusanscondensed-bold-character-width-127.php
│ │ ├── dejavusanscondensed-bold-character-widths.dat
│ │ ├── dejavusanscondensed-bold-font-metrics.php
│ │ ├── dejavusanscondensed-boldoblique-character-width-127.php
│ │ ├── dejavusanscondensed-boldoblique-character-widths.dat
│ │ ├── dejavusanscondensed-boldoblique-font-metrics.php
│ │ ├── dejavusanscondensed-character-width-127.php
│ │ ├── dejavusanscondensed-character-widths.dat
│ │ ├── dejavusanscondensed-font-metrics.php
│ │ ├── dejavusanscondensed-oblique-character-width-127.php
│ │ ├── dejavusanscondensed-oblique-character-widths.dat
│ │ ├── dejavusanscondensed-oblique-font-metrics.php
│ │ ├── dejavusansmono-bold-character-width-127.php
│ │ ├── dejavusansmono-bold-character-widths.dat
│ │ ├── dejavusansmono-bold-font-metrics.php
│ │ ├── dejavusansmono-boldoblique-character-width-127.php
│ │ ├── dejavusansmono-boldoblique-character-widths.dat
│ │ ├── dejavusansmono-boldoblique-font-metrics.php
│ │ ├── dejavusansmono-character-width-127.php
│ │ ├── dejavusansmono-character-widths.dat
│ │ ├── dejavusansmono-font-metrics.php
│ │ ├── dejavusansmono-oblique-character-width-127.php
│ │ ├── dejavusansmono-oblique-character-widths.dat
│ │ ├── dejavusansmono-oblique-font-metrics.php
│ │ ├── dejavuserif-bold-character-width-127.php
│ │ ├── dejavuserif-bold-character-widths.dat
│ │ ├── dejavuserif-bold-font-metrics.php
│ │ ├── dejavuserif-bolditalic-character-width-127.php
│ │ ├── dejavuserif-bolditalic-character-widths.dat
│ │ ├── dejavuserif-bolditalic-font-metrics.php
│ │ ├── dejavuserif-character-width-127.php
│ │ ├── dejavuserif-character-widths.dat
│ │ ├── dejavuserif-font-metrics.php
│ │ ├── dejavuserif-italic-character-width-127.php
│ │ ├── dejavuserif-italic-character-widths.dat
│ │ ├── dejavuserif-italic-font-metrics.php
│ │ ├── dejavuserifcondensed-bold-character-width-127.php
│ │ ├── dejavuserifcondensed-bold-character-widths.dat
│ │ ├── dejavuserifcondensed-bold-font-metrics.php
│ │ ├── dejavuserifcondensed-bolditalic-character-width-127.php
│ │ ├── dejavuserifcondensed-bolditalic-character-widths.dat
│ │ ├── dejavuserifcondensed-bolditalic-font-metrics.php
│ │ ├── dejavuserifcondensed-character-width-127.php
│ │ ├── dejavuserifcondensed-character-widths.dat
│ │ ├── dejavuserifcondensed-font-metrics.php
│ │ ├── dejavuserifcondensed-italic-character-width-127.php
│ │ ├── dejavuserifcondensed-italic-character-widths.dat
│ │ └── dejavuserifcondensed-italic-font-metrics.php
│ └── zapfdingbats.php
│ └── tFPDF
│ ├── PDF.php
│ ├── PDFBarcode.php
│ ├── ProtectedPDF.php
│ └── TTFontFile.php
├── package-lock.json
├── package.json
├── phpcs.xml.dist
├── readme.txt
├── renovate.json
├── sensei-certificates-functions.php
├── templates
└── single-certificate_template.php
├── uninstall.php
├── webpack.config.js
└── woothemes-sensei-certificates.php
/.editorconfig:
--------------------------------------------------------------------------------
1 | # This file is for unifying the coding style for different editors and IDEs
2 | # editorconfig.org
3 |
4 | # WordPress Coding Standards
5 | # https://make.wordpress.org/core/handbook/coding-standards/
6 |
7 | root = true
8 |
9 | [*]
10 | charset = utf-8
11 | end_of_line = lf
12 | indent_size = 4
13 | tab_width = 4
14 | indent_style = tab
15 | insert_final_newline = true
16 | trim_trailing_whitespace = true
17 |
18 | [*.txt]
19 | trim_trailing_whitespace = false
20 |
21 | [*.{md,json,yml}]
22 | trim_trailing_whitespace = false
23 | indent_style = space
24 | indent_size = 2
25 |
26 | [{*.txt}]
27 | end_of_line = crlf
28 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build
2 | /assets/dist
3 | /vendor
4 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: "[Type] Bug"
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
12 | ### Steps to Reproduce
13 | 1. Go to '...'
14 | 2. Click on '....'
15 | 3. Scroll down to '....'
16 | 4. See error
17 |
18 | ### What I Expected
19 |
20 |
21 | ### What Happened Instead
22 |
23 |
24 | ### PHP / WordPress / Sensei Certificates / Sensei LMS version
25 |
26 |
27 | ### Browser / OS version
28 |
29 |
30 | ### Screenshot / Video
31 |
32 |
33 | ### Context / Source
34 |
35 |
36 |
37 |
38 |
46 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: "[Type] Enhancement"
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
12 | ### Is your feature request related to a problem? Please describe
13 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
14 |
15 | ### Describe the solution you'd like
16 | A clear and concise description of what you want to happen.
17 |
18 | ### Describe alternatives you've considered
19 | A clear and concise description of any alternative solutions or features you've considered.
20 |
21 | ### Additional context
22 | Add any other context or screenshots about the feature request here.
23 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Fixes #
2 |
3 | ### Changes proposed in this Pull Request
4 |
5 | *
6 |
7 | ### Testing instructions
8 |
9 | *
10 |
11 |
12 | ### New/Updated Hooks
13 |
14 | *
15 |
16 |
17 | ### Deprecated Code
18 |
19 | *
20 |
21 |
25 | ### Screenshot / Video
26 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea
3 | node_modules
4 | vendor
5 | build
6 | assets/dist
7 | /*.zip
8 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 18
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Sensei LMS Certificates
2 | =======================
3 |
4 | Award your students with a certificate of completion and a sense of accomplishment after finishing a course.
5 |
--------------------------------------------------------------------------------
/admin/post-types/certificate_templates.php:
--------------------------------------------------------------------------------
1 | ';
91 | $columns['name'] = __( 'Name', 'sensei-certificates' );
92 | $columns['thumb'] = __( 'Image', 'sensei-certificates' );
93 |
94 | return $columns;
95 |
96 | } // End certificate_template_edit_certificate_columns()
97 |
98 |
99 | /**
100 | * Custom Column values for certificate templates page
101 | *
102 | * @since 1.0.0
103 | * @param string $column column identifier
104 | */
105 | function certificate_template_custom_certificate_columns( $column ) {
106 |
107 | global $post;
108 |
109 | switch ( $column ) {
110 | case 'thumb':
111 | $edit_link = get_edit_post_link( $post->ID );
112 | if ( has_post_thumbnail( $post->ID ) ) {
113 | $image = get_the_post_thumbnail( $post->ID, 'thumb' );
114 | echo '' . wp_kses_post( $image ) . '';
115 | } // End If Statement
116 |
117 | break;
118 |
119 | case 'name':
120 | $edit_link = get_edit_post_link( $post->ID );
121 | $title = _draft_or_post_title();
122 |
123 | $post_type_object = get_post_type_object( $post->post_type );
124 | $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID );
125 |
126 | echo '' . esc_html( $title ) . '';
127 |
128 | // display post states a little more selectively than _post_states( $post );
129 | if ( 'draft' == $post->post_status ) {
130 | echo " - " . esc_html__( 'Draft', 'sensei-certificates' ) . '';
131 | } // End If Statement
132 |
133 | echo '';
134 |
135 | // Get actions
136 | $actions = array();
137 |
138 | $actions['id'] = 'ID: ' . $post->ID;
139 |
140 | if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) {
141 | if ( 'trash' == $post->post_status ) {
142 | $actions['untrash'] = "ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore', 'sensei-certificates' ) . '';
143 | } elseif ( EMPTY_TRASH_DAYS ) {
144 | $actions['trash'] = "" . __( 'Trash', 'sensei-certificates' ) . '';
145 | }
146 | if ( 'trash' == $post->post_status || ! EMPTY_TRASH_DAYS ) {
147 | $actions['delete'] = "" . __( 'Delete Permanently', 'sensei-certificates' ) . '';
148 | }
149 | } // End If Statement
150 |
151 | $actions = apply_filters( 'post_row_actions', $actions, $post );
152 |
153 | echo '
';
154 |
155 | $i = 0;
156 | $action_count = count( $actions );
157 |
158 | foreach ( $actions as $action => $link ) {
159 | ( $action_count - 1 == $i ) ? $sep = '' : $sep = ' | ';
160 | echo '' . wp_kses_post( $link . $sep ) . '';
161 | $i++;
162 | } // End For Loop
163 | echo '
';
164 | break;
165 |
166 | } // End Switch Statement
167 |
168 | } // End certificate_template_custom_certificate_columns()
169 |
--------------------------------------------------------------------------------
/admin/post-types/writepanels/writepanel-certificate_image.php:
--------------------------------------------------------------------------------
1 | ID, '_image_ids', true );
52 |
53 | if ( is_array( $image_ids ) && count( $image_ids ) > 0 ) {
54 |
55 | if ( is_numeric( $image_ids[0] ) ) {
56 |
57 | $image_id = $image_ids[0];
58 | $image_src = wp_get_attachment_url( $image_id );
59 | $attachment = wp_get_attachment_metadata( $image_id );
60 |
61 | }
62 | }
63 |
64 | ?>
65 |
66 |
; ?>)
67 |
68 |
69 |
70 |
71 |
72 |
73 | $image_id ) {
101 |
102 | if ( 0 == $i || $image_id ) {
103 | $image_ids[] = $image_id !== 0 ? $image_id : '';
104 | }
105 | }
106 |
107 | update_post_meta( $post_id, '_image_ids', $image_ids );
108 |
109 | if ( $image_ids[0] ) {
110 | set_post_thumbnail( $post_id, $image_ids[0] );
111 | } else {
112 | delete_post_thumbnail( $post_id );
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/admin/post-types/writepanels/writepanel-course_data.php:
--------------------------------------------------------------------------------
1 | ID, '_course_certificate_template', true );
52 |
53 | $post_args = array(
54 | 'post_type' => 'certificate_template',
55 | 'post_status' => 'private',
56 | 'numberposts' => -1,
57 | 'orderby' => 'title',
58 | 'order' => 'DESC',
59 | 'exclude' => $post->ID,
60 | 'suppress_filters' => 0,
61 | );
62 | $posts_array = get_posts( $post_args );
63 |
64 | $html = '';
65 |
66 | $html .= '';
67 |
68 | if ( count( $posts_array ) > 0 ) {
69 | $html .= '' . "\n";
75 | } else {
76 | if ( ! empty( $select_certificate_template ) ) {
77 | $html .= '';
78 | }
79 | $html .= '' . esc_html( __( 'No certificate template exist yet. Please add some first.', 'sensei-certificates' ) ) . '
';
80 | }
81 |
82 | $allowed_html = [
83 | 'input' => [
84 | 'type' => [],
85 | 'name' => [],
86 | 'id' => [],
87 | 'value' => [],
88 | ],
89 | 'select' => [
90 | 'id' => [],
91 | 'name' => [],
92 | 'class' => [],
93 | ],
94 | 'option' => [
95 | 'value' => [],
96 | 'selected' => [],
97 | ],
98 | 'p' => [],
99 | ];
100 |
101 | echo wp_kses( $html, $allowed_html );
102 |
103 | }
104 |
105 |
106 | /**
107 | * Course Certificate Template Data Save.
108 | *
109 | * Function for processing and storing all course certificate data.
110 | *
111 | * @since 1.0.0
112 | * @param int $post_id The certificate id.
113 | * @param object $post The certificate post object.
114 | */
115 | function course_certificate_templates_process_meta( $post_id ) {
116 |
117 | global $woothemes_sensei_certificate_templates;
118 |
119 | if ( ( get_post_type() != 'course' ) ) {
120 | return $post_id;
121 | }
122 |
123 | $woothemes_sensei_certificate_templates->save_post_meta( 'course_certificate_template', $post_id );
124 |
125 | }
126 |
--------------------------------------------------------------------------------
/assets/blocks/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * WordPress dependencies
3 | */
4 | import { __ } from '@wordpress/i18n';
5 | import { addFilter } from '@wordpress/hooks';
6 | import { registerBlockVariation, registerBlockType } from '@wordpress/blocks';
7 |
8 | /**
9 | * Internal dependencies.
10 | */
11 | import ViewCertificateLinkBlock from './view-certificate-link';
12 |
13 | // Register the View Certificate Link block.
14 | registerBlockType( ViewCertificateLinkBlock.name, ViewCertificateLinkBlock );
15 |
16 | const attributes = {
17 | className: 'view-certificate',
18 | text: __( 'View Certificate', 'sensei-certificates' ),
19 | };
20 |
21 | registerBlockVariation( 'core/button', {
22 | name: 'sensei-certificates/view-certificate-button',
23 | title: __( 'View Certificate', 'sensei-certificates' ),
24 | description: __(
25 | 'Enable students to view their course certificate.',
26 | 'sensei-certificates'
27 | ),
28 | keywords: [ __( 'Certificates', 'sensei-lms' ) ],
29 | category: 'sensei-lms',
30 | attributes,
31 | isActive: ( blockAttributes, variationAttributes ) =>
32 | blockAttributes.className?.match( variationAttributes.className ),
33 | } );
34 |
35 | const addBlockToTemplate = ( blocks ) => [
36 | ...blocks,
37 | [ 'core/button', attributes ],
38 | ];
39 |
40 | // Add this block to the Course Completed Actions block.
41 | addFilter(
42 | 'sensei-lms.Course.completedActions',
43 | 'sensei-certificates',
44 | addBlockToTemplate
45 | );
46 |
47 | registerBlockVariation( 'core/buttons', {
48 | name: 'sensei-certificates/view-certificate-buttons',
49 | title: __( 'View Certificate', 'sensei-certificates' ),
50 | description: __(
51 | 'A Buttons block with a View Certificate button.',
52 | 'sensei-certificates'
53 | ),
54 | category: 'sensei-lms',
55 | keywords: [
56 | __( 'Certificate', 'sensei-certificates' ),
57 | __( 'View Certificate', 'sensei-certificates' ),
58 | ],
59 | innerBlocks: [ [ 'core/button', attributes ] ],
60 | } );
61 |
--------------------------------------------------------------------------------
/assets/blocks/view-certificate-link/block.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://schemas.wp.org/trunk/block.json",
3 | "apiVersion": 2,
4 | "name": "sensei-certificates/view-certificate-link",
5 | "title": "View Certificate",
6 | "category": "sensei-lms",
7 | "description": "Displays a link to the certificate.",
8 | "textdomain": "sensei-certificates",
9 | "ancestor": [ "sensei-lms/course-list" ],
10 | "usesContext": [ "postType" ],
11 | "example": {}
12 | }
13 |
--------------------------------------------------------------------------------
/assets/blocks/view-certificate-link/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * WordPress dependencies
3 | */
4 | import { link as icon } from '@wordpress/icons';
5 |
6 | /**
7 | * Internal dependencies
8 | */
9 | import edit from './view-certificate-link-edit';
10 | import metadata from './block.json';
11 |
12 | export default {
13 | ...metadata,
14 | metadata,
15 | icon,
16 | edit,
17 | };
18 |
--------------------------------------------------------------------------------
/assets/blocks/view-certificate-link/view-certificate-link-edit.js:
--------------------------------------------------------------------------------
1 | /**
2 | * WordPress dependencies
3 | */
4 | import { useBlockProps, Warning } from '@wordpress/block-editor';
5 | import { __ } from '@wordpress/i18n';
6 |
7 | /**
8 | * View Certificate Link block edit component.
9 | *
10 | * @param {Object} props
11 | * @param {Object} props.context Block context.
12 | * @param {Object} props.context.postType Post type.
13 | */
14 | const ViewCertificateLinkEdit = ( { context: { postType } } ) => {
15 | const blockProps = useBlockProps();
16 |
17 | if ( ! [ 'course', 'lesson' ].includes( postType ) ) {
18 | return (
19 |
20 |
21 | { __(
22 | 'The View Certificate Link block can only be used inside the Course List block.',
23 | 'sensei-certificates'
24 | ) }
25 |
26 |
27 | );
28 | }
29 |
30 | return (
31 |
35 | );
36 | };
37 |
38 | export default ViewCertificateLinkEdit;
39 |
--------------------------------------------------------------------------------
/assets/css/admin.scss:
--------------------------------------------------------------------------------
1 | #certificate_image_wrapper .certificate_field {
2 | background-color: #CCCCCC;
3 | border: 1px dashed #888888;
4 | opacity: 0.5;
5 | position: absolute;
6 | text-align: center;
7 | }
8 |
9 | .colorpick-form-field {
10 | position:relative;
11 | }
12 |
13 | .certificate_templates_options_panel, .panel {
14 | padding: 9px 9px 9px 9px;
15 | color: #555;
16 | }
17 |
18 | .certificate_templates_options_panel p {
19 | margin: 0 0 9px;
20 | font-size: 12px;
21 | padding: 5px 9px;
22 | line-height: 24px;
23 | clear: both;
24 | }
25 |
26 |
27 | .certificate_templates_options_panel .checkbox {
28 | vertical-align: middle;
29 | margin: 7px 0;
30 | width: auto;
31 | }
32 | .certificate_templates_options_panel p {
33 | margin: 9px 0 9px;
34 | }
35 |
36 | .certificate_templates_options_panel label, legend {
37 | float: left;
38 | width: 150px;
39 | padding: 0;
40 | }
41 | .certificate_templates_options_panel label.req, legend.req {
42 | font-weight: bold;
43 | font-style: normal;
44 | color: red;
45 | }
46 | .certificate_templates_options_panel .description {
47 | padding: 0;
48 | margin: 0 0 0 7px;
49 | }
50 | .certificate_templates_options_panel .description-block {
51 | margin-left: 0;
52 | display: block;
53 | }
54 | .certificate_templates_options_panel textarea, input, select {
55 | margin: 0;
56 | }
57 | .certificate_templates_options_panel textarea {
58 | vertical-align: top;
59 | height: 10.5em;
60 | line-height: 1.5em;
61 | }
62 | .certificate_templates_options_panel input {
63 | width: 50%;
64 | float: left;
65 | }
66 | .certificate_templates_options_panel input.button {
67 | width: auto;
68 | margin-left: 8px;
69 | }
70 | .certificate_templates_options_panel select {
71 | float: left;
72 | }
73 | .certificate_templates_options_panel .short {
74 | width: 20%;
75 | }
76 | .certificate_templates_options_panel .form-field input.medium, .certificate_templates_options_panel .form-field textarea.medium {
77 | width: 40%;
78 | }
79 | .certificate_templates_options_panel .threequarter {
80 | width: 70%;
81 | }
82 | .certificate_templates_options_panel .sized {
83 | width: auto !important;
84 | margin-right: 6px;
85 | }
86 | .certificate_templates_options_panel .options_group {
87 | border-top: 1px solid white;
88 | border-bottom: 1px solid #DFDFDF;
89 | }
90 | .certificate_templates_options_panel .options_group:first-child {
91 | border-top: 0;
92 | }
93 | .certificate_templates_options_panel .options_group:last-child {
94 | border-bottom: 0;
95 | }
96 | .certificate_templates_options_panel .options_group fieldset {
97 | margin: 9px 0;
98 | font-size: 12px;
99 | padding: 5px 9px;
100 | line-height: 24px;
101 | }
102 | .certificate_templates_options_panel .options_group fieldset label {
103 | width: auto;
104 | float: none;
105 | }
106 | .certificate_templates_options_panel .options_group fieldset ul {
107 | float: left;
108 | width: 50%;
109 | margin: 0;
110 | padding: 0;
111 | }
112 | .certificate_templates_options_panel .options_group fieldset ul li {
113 | margin: 0;
114 | width: auto;
115 | }
116 | .certificate_templates_options_panel .options_group fieldset ul li input {
117 | width: auto;
118 | float: none;
119 | margin-right: 4px;
120 | }
121 |
122 | .certificate_templates_options_panel .dimensions_field .wrap input {
123 | margin-right: .2%;
124 | width: 6.6%;
125 | }
126 | .certificate_templates_options_panel .dimensions_field .wrap .last {
127 | margin-right: 0;
128 | }
129 |
130 |
131 | .certificate_templates_options_panel .upload_file_button {
132 | padding-left: 20px;
133 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAQ0lEQVQYV3WPUQoAMAhC1+E6tYdrFBgiW185X7biSAGolpkZfN6GJg1CA7ip0CYo+FzxBTqeE/7J1qGAXsTEAdxQfQHJTymZe4oqiAAAAABJRU5ErkJggg==) !important;
134 | background-color: #FEFEFE !important;
135 | background-repeat: no-repeat !important;
136 | background-position: 8px 7px !important;
137 | }
138 |
--------------------------------------------------------------------------------
/assets/css/frontend.scss:
--------------------------------------------------------------------------------
1 | .sensei-certificate-link {
2 | float: right;
3 | }
4 |
--------------------------------------------------------------------------------
/assets/images/certificate-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/assets/images/certificate-logo.png
--------------------------------------------------------------------------------
/assets/images/certificate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/assets/images/certificate.png
--------------------------------------------------------------------------------
/assets/images/certificate_template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/assets/images/certificate_template.png
--------------------------------------------------------------------------------
/assets/images/sensei_certificate_nograde.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/assets/images/sensei_certificate_nograde.png
--------------------------------------------------------------------------------
/assets/js/admin.js:
--------------------------------------------------------------------------------
1 | jQuery( function ( $ ) {
2 | 'use strict';
3 |
4 | /** Handler code for the certificate primary image certificate_image_meta_box() **/
5 |
6 | // save the default WP media browser callback
7 | window.send_to_editor_default = window.send_to_editor;
8 |
9 | // Uploading files
10 | var file_frame;
11 | var el;
12 |
13 | // original image dimensions
14 | var imageWidth = sensei_certificate_templates_params.primary_image_width;
15 | var imageHeight = sensei_certificate_templates_params.primary_image_height;
16 |
17 | $( document ).on( 'click', '#set-certificate-image', function ( event ) {
18 | event.preventDefault();
19 |
20 | // save the element that was clicked on so we can set the image
21 | el = $( this );
22 |
23 | // If the media frame already exists, reopen it.
24 | if ( file_frame ) {
25 | file_frame.open();
26 | return;
27 | }
28 |
29 | // Create the media frame.
30 | file_frame = wp.media.frames.file_frame = wp.media( {
31 | title: 'Select an Image',
32 | button: {
33 | text: 'Set Image',
34 | },
35 | multiple: false,
36 | } );
37 |
38 | // When an image is selected, run a callback.
39 | file_frame.on( 'select', function () {
40 | // We set multiple to false so only get one image from the uploader
41 | var attachment = file_frame
42 | .state()
43 | .get( 'selection' )
44 | .first()
45 | .toJSON();
46 |
47 | // grab the original image height/width for the image area select
48 | imageWidth = attachment.width;
49 | imageHeight = attachment.height;
50 |
51 | if ( 'set-certificate-image' == el.attr( 'id' ) ) {
52 | // primary (first page) certificate image
53 | $( '#upload_image_id_0' ).val( attachment.id );
54 | $( '#remove-certificate-image' ).show();
55 | $( 'img#certificate_image_0' ).attr( 'src', attachment.url );
56 | }
57 | } );
58 |
59 | // Finally, open the modal
60 | file_frame.open();
61 | } );
62 |
63 | // remove the Certificate Background Image
64 | $( '#remove-certificate-image' ).click( function () {
65 | $( '#upload_image_id_0' ).val( '' );
66 | $( 'img#certificate_image_0' ).attr( 'src', '' );
67 | $( this ).hide();
68 |
69 | return false;
70 | } );
71 |
72 | // redraw the positioned certificate fields on the primary image as the browser is scaled
73 | $( window ).resize( function () {
74 | redrawCertificateFieldPlaceholders();
75 | } );
76 |
77 | // draw any positioned Certificate fields on the primary image
78 | function redrawCertificateFieldPlaceholders() {
79 | $( '.field_pos' ).each( function ( index, el ) {
80 | el = $( el );
81 |
82 | var id = el.attr( 'id' );
83 | var field = $( '#field' + id );
84 | var image = $( '#certificate_image_0' );
85 |
86 | // if the image is removed, hide all fields
87 | if ( '' == image.attr( 'src' ) ) {
88 | if ( field ) field.hide();
89 | return;
90 | }
91 |
92 | // is the image resized due to the browser being shrunk?
93 | var scale = 1;
94 | if ( imageWidth != image.width() ) {
95 | scale = image.width() / imageWidth;
96 | }
97 |
98 | // get the scaled field position
99 | var position = el.val()
100 | ? el
101 | .val()
102 | .split( ',' )
103 | .map( function ( n ) {
104 | return parseInt( n ) * scale;
105 | } )
106 | : null;
107 |
108 | // create the field element if needed
109 | if ( 0 === field.length ) {
110 | $( '#certificate_image_wrapper' ).append(
111 | '' +
114 | sensei_certificate_templates_params[ id ] +
115 | ''
116 | );
117 |
118 | // clicking on the fields allows them to be edited
119 | $( '#field' + id ).click( function ( el ) {
120 | certificate_field_area_select( el.target.id.substr( 6 ) ); // remove the leading 'field_' to create the field name
121 | } );
122 |
123 | field = $( '#field' + id );
124 | }
125 |
126 | if ( position ) {
127 | field.css( {
128 | left: position[ 0 ] + 'px',
129 | top: position[ 1 ] + 'px',
130 | width: position[ 2 ] + 'px',
131 | height: position[ 3 ] + 'px',
132 | } );
133 | field.show();
134 | } else {
135 | field.hide();
136 | }
137 | } );
138 | }
139 |
140 | // initial setup of the field placeholders
141 | redrawCertificateFieldPlaceholders();
142 |
143 | /** Handler code for the certificate data fields certificate_data_meta_box() **/
144 |
145 | // Note on the image area select: I have to be very brute force
146 | // with this thing unfortunately and create/remove it with every
147 | // selection start, because otherwise I can't get the thing to
148 | // update the selection position, or to resize properly if the
149 | // browser window is resized.
150 | // And it still doesn't resize the selection box as the image is
151 | // resized due to the browser window shrinking/growing, but oh well
152 | // can't have it all
153 |
154 | var ias;
155 |
156 | // a coordinate field gained focus, enable the image area select overlay on the certificate main image and scroll it into the viewport if needed
157 | $( 'input.set_position' ).click( function () {
158 | certificate_field_area_select( this.id );
159 | } );
160 |
161 | // display the imgAreaSelect tool on top of the Certificate Background Image so that the field_name position can be defined
162 | // field_name: ie 'product_name_post'
163 | function certificate_field_area_select( field_name ) {
164 | // no certificate image
165 | if ( ! $( 'img#certificate_image_0' ).attr( 'src' ) ) return;
166 |
167 | // always clear the image select area, if any
168 | removeImgAreaSelect();
169 |
170 | // clicked 'done', return the button to normal and remove the area select overlay
171 | if (
172 | $( '#' + field_name ).val() ==
173 | sensei_certificate_templates_params.done_label
174 | ) {
175 | $( '#' + field_name ).val(
176 | sensei_certificate_templates_params.set_position_label
177 | );
178 | return;
179 | }
180 |
181 | // make sure the certificate field placeholder for this field is hidden
182 | $( '#field_' + field_name ).hide();
183 |
184 | var coords = $( '#_' + field_name ).val()
185 | ? $( '#_' + field_name )
186 | .val()
187 | .split( ',' )
188 | .map( function ( n ) {
189 | return parseInt( n );
190 | } )
191 | : [ null, null, null, null ];
192 |
193 | // reset all position set buttons and set the current
194 | $( 'input.set_position' ).val(
195 | sensei_certificate_templates_params.set_position_label
196 | );
197 | $( '#' + field_name ).val(
198 | sensei_certificate_templates_params.done_label
199 | );
200 |
201 | // create the image area select element
202 | ias = $( 'img#certificate_image_0' ).imgAreaSelect( {
203 | show: true,
204 | handles: true,
205 | instance: true,
206 | imageWidth: imageWidth,
207 | imageHeight: imageHeight,
208 | x1: coords[ 0 ],
209 | y1: coords[ 1 ],
210 | x2: coords[ 0 ] + coords[ 2 ],
211 | y2: coords[ 1 ] + coords[ 3 ],
212 | onSelectEnd: function ( img, selection ) {
213 | areaSelect( selection, field_name );
214 | },
215 | } );
216 |
217 | // scroll into viewport if needed
218 | if (
219 | $( document ).scrollTop() >
220 | $( 'img#certificate_image_0' ).offset().top +
221 | $( 'img#certificate_image_0' ).height() * ( 2 / 3 )
222 | ) {
223 | $( 'html, body' ).animate(
224 | {
225 | scrollTop: $( '#title' ).offset().top,
226 | },
227 | 500
228 | );
229 | }
230 | }
231 |
232 | // disable the img area select overlay
233 | function removeImgAreaSelect() {
234 | $( 'img#certificate_image_0' ).imgAreaSelect( { remove: true } );
235 | redrawCertificateFieldPlaceholders();
236 | }
237 |
238 | // certificate image selection made, save it to the coordinate field and show the 'remove' button
239 | function areaSelect( selection, field_name ) {
240 | // Element is being drawn if width and height are not 0.
241 | if ( selection && selection.width !== 0 && selection.height !== 0 ) {
242 | $( '#_' + field_name ).val(
243 | selection.x1 +
244 | ',' +
245 | selection.y1 +
246 | ',' +
247 | selection.width +
248 | ',' +
249 | selection.height
250 | );
251 | } else {
252 | // Otherwise, the user has clicked somewhere on the image.
253 | certificate_field_area_select( field_name );
254 | }
255 |
256 | $( '#remove_' + field_name ).show();
257 | }
258 |
259 | // position remove button clicked
260 | $( 'input.remove_position' ).click( function () {
261 | $( this ).hide();
262 | $( '#_' + this.id.substr( 7 ) ).val( '' ); // remove the coordinates
263 | $( '#' + this.id.substr( 7 ) ).val(
264 | sensei_certificate_templates_params.set_position_label
265 | );
266 | removeImgAreaSelect(); // make sure the overlay is gone
267 | return;
268 | } );
269 |
270 | if ( typeof jQuery.fn.hasParent !== 'function' ) {
271 | jQuery.extend( jQuery.fn, {
272 | // Name of our method & one argument (the parent selector)
273 | hasParent: function ( p ) {
274 | // Returns a subset of items using jQuery.filter
275 | return this.filter( function () {
276 | // Return truthy/falsey based on presence in parent
277 | return $( p ).find( this ).length;
278 | } );
279 | },
280 | } );
281 | }
282 |
283 | // Activate colorpick.
284 | const $colorpick = $( '.colorpick' );
285 | if (
286 | typeof jQuery.fn.wpColorPicker === 'function' &&
287 | $colorpick.length > 0
288 | ) {
289 | $colorpick.wpColorPicker();
290 |
291 | $( document ).mousedown( function ( e ) {
292 | if ( $( e.target ).hasParent( '.wp-picker-holder' ) ) return;
293 | if ( $( e.target ).hasParent( 'mark' ) ) return;
294 | $( '.wp-picker-holder' ).each( function () {
295 | $( this ).fadeOut();
296 | } );
297 | } );
298 | }
299 | } );
300 |
301 | // Polyfill
302 |
--------------------------------------------------------------------------------
/assets/js/course.js:
--------------------------------------------------------------------------------
1 | jQuery( document ).ready( function ( $ ) {
2 | // Course Write Panel
3 | if ( jQuery( '#course-certificate-template-options' ) ) {
4 | jQuery( '#course-certificate-template-options' ).select2( {
5 | width: '100%',
6 | } );
7 | }
8 | } );
9 |
--------------------------------------------------------------------------------
/changelog.txt:
--------------------------------------------------------------------------------
1 | *** Changelog ***
2 |
3 | 2024.11.14 - version 2.5.3
4 | * Fix: Adjust the template check for the Certificate Template preview - #362
5 |
6 | 2024.08.08 - version 2.5.2
7 | * New: Add certificate data field hooks - #292
8 | * Fix: Allow certificates to be removed from a course - #353
9 | * Fix: Certificates not rendering on PHP 8.2 - #354
10 |
11 | 2023.09.19 - version 2.5.1
12 | Fix: Missing "View Certificate" link for `sensei_user_courses` shortcode - #348
13 |
14 | 2023.08.24 - version 2.5.0
15 | * New: Display View Certificate button on public learner profile - #341
16 | * Fix: Deprecation notice for creation of dynamic property - #343
17 |
18 | 2023.06.01 - version 2.4.0
19 | * New: Add "View Certificate" link to Course List templates - #327
20 | * New: Bump minimum PHP version to 7.2
21 | * Fix: Error on the certificate page for WP VIP users - #335
22 | * Fix: Report links on the certificates listing - #298
23 | * Fix: Deprecated function warning - #336
24 |
25 | 2022.07.11 - version 2.3.0
26 | * New: Add View Certificate block - #302
27 | * New: Bump minimum PHP version to 7.0 - #293
28 | * New: Add setting to delete data on uninstall - #291
29 | * Fix: Redirect to login when viewing a certificate as a guest - #289
30 | * Fix: Fix warning when accessing certificate - #299
31 |
32 | 2021.08.27 - version 2.2.1
33 | * Tweak: Add View Certificate button to the Course Completed page automatically - #280
34 | * Fix: Don't display View Certificate button if course has no certificate template - #277
35 |
36 | 2021.08.12 - version 2.2.0
37 | * New: Add "View Certificate" button to Course Completed Actions block - #271
38 |
39 | 2021.03.02 - version 2.1.0
40 | * New: Introduce new tools to replace data updates - #254
41 | * Tweak: Update tFPDF version - #149, #256
42 |
43 | 2020.10.27 - version 2.0.7
44 | * Tweak: Remove JS code that references non-existent selectors - #247
45 | * Tweak: Switch to webpack via wordpress-scripts and simplify build - #241
46 | * Tweak: Add missing translator comments - #248
47 | * Fix: Don't encode course title for HTML display in PDF generation - #243
48 |
49 | 2020.08.21 - version 2.0.6
50 | * Fix: Allow line breaks in certificate templates - #239
51 | * Fix: Fix certificate template image functionality - #238
52 |
53 | 2020.07.20 - version 2.0.5
54 | * New: Add German translation - #214
55 | * Fix: Fix dropdown in Certificate Template meta box - #225
56 |
57 | 2020.04.27 - version 2.0.4
58 | * Fix: Fix issues reported by PHPCS - #219
59 |
60 | 2020.04.16 - version 2.0.3
61 | * New: Prepare the plugin to be distributed through WordPress.org - #215
62 |
63 | 2020.03.20 - version 2.0.2
64 | * Fix: Certificate display issue when using non-Latin characters - #211
65 |
66 | 2020.03.12 - version 2.0.1
67 | * New: Rename plugin to Sensei LMS Certificates - #195
68 | * Tweak: Remove certificates and templates from public search queries - #183
69 | * Tweak: Retrieve absolute image path via get_attached_file - #199
70 | * Tweak: Only load CSS on pages that require it - #205
71 | * Tweak: Replace use of deprecated course_query function - #207
72 | * Fix: Ensure font files can be accessed when plugin is copied to another site - #193
73 | * Fix: Localize placeholder text when editing certificate template - #206
74 | * Fix: Don't hide template positioning box when clicking off it - #204
75 |
76 | 2019.04.25 - version 2.0.0
77 | * New: Add dependency check for minimum Sensei (1.11.0) and PHP (5.6) versions - #171
78 | * New: Add certificate link to course completion emails - #174
79 | * New: Add Hungarian translation (@amroland) - #170, #177
80 | * Tweak: Check dependencies and perform the majority of plugin loading tasks after other plugins have loaded - #175
81 | * Tweak: Use Woo header for plugin updates - #172
82 | * Fix: Disable viewing of certificates for courses without a certificate template - #173
83 |
84 | 2018.12.06 - version 1.1.1
85 | * Fixes JavaScript error when editing a certificate template
86 | * Adds additional string escaping throughout the plugin
87 | * Fixes minor issue with restoring trashed certificate templates
88 | * Add translations for Russian and French
89 |
90 | 2018.07.23 - version 1.1.0
91 | * Make date formatting for certificates follow the WP date format by default
92 | * Fix certificates menu position for Teacher users
93 |
94 | 2017.11.01 - version 1.0.17
95 | * Fix fatal on plugin activation
96 | * Remove unnecessary .pot file
97 | * Make placeholders translatable in post_type_setup
98 |
99 | 2017.05.03 - version 1.0.16
100 | * Fix fatal when activating certificates for the first time
101 |
102 | 2017.04.28 - version 1.0.15
103 | * Admin: Allow only teachers and administrators to view admin areas
104 | * Never bundle generated ttf specs from tfpdf
105 |
106 | 2017.04.25 - version 1.0.14
107 | * Fix certificate data update
108 | * Add the Display Name to the admin list table for certificates enhancement
109 | * Fix Errors when previewing a certificate template bug
110 | * Fix the selected admin menu item when editing a certificate template
111 | * Fix Permissions error on certificate learner and course links bug
112 | * Fix PHP 7 Errors/Notices on tfpdf
113 |
114 | 2016.04.29 - version 1.0.13
115 | * Fix - Fixed a deprecated function notice
116 | * Fix - Ensures the certificate background image displays after saving template
117 |
118 | 2016.02.02 - version 1.0.12
119 | * Fix - Ensures certificates can be viewed when set to public
120 | * Fix - Fixed a notice on certificates where background image id was not found
121 | * Fix - Fixed a display issue with the certificate template dropdown
122 | * Tweak - Ensure compatibility with Sensei 1.9
123 |
124 | 2015.06.18 - version 1.0.11
125 | * Fix - Ensure that the certificate view setting can only be seen by the current logged in user
126 | * Tweak - Moved the certificates menu items to their own top level menu
127 |
128 | 2015.06.11 - version 1.0.10
129 | * Fix - Fix the certificate error that occurred when doing manual grading
130 |
131 | 2015.02.10 - version 1.0.9
132 | * Fix - Fixing certificate generation
133 |
134 | 2015.02.01 - version 1.0.8
135 | * Tweak - Updating code for Sensei 1.7 compatibility
136 |
137 | 2014.09.23 - version 1.0.7
138 | * Fix - Visit plugin site link in admin dashboard 404.
139 | * Fix - Fixed certificate orientation if background image is portrait.
140 | * Fix - Fixed a form display issue in the template editor.
141 | * Fix - Removing erroneous Select2 reference.
142 | * Tweak - If first and last name are added, they will be displayed on the certificate instead of the display name.
143 |
144 | 2014.09.16 - version 1.0.6
145 | * Fix - Ensures sensei_certificate_date_format filter applies to all certificates, not just previews.
146 | * Fix - Fixed coding standards warnings.
147 |
148 | 2014.06.23 - version 1.0.5
149 | * Fix - Localizes completion date string to use correct language for month names.
150 | * Fix - Fixes PHP warning when a certificate template has no styles selected.
151 | * Fix - Ensures certificate link displays even if the course has no quizzes (requires Sensei v1.6)
152 |
153 | 2014.04.28 - version 1.0.4
154 | * Update - Adding support for user-defined custom fonts
155 | * Fix - Switching to tFPDF library for PDF generation to handle multibyte character sets (Greek, Arabic, etc.)
156 | * Fix - Making 'View Certificate' link text available for localization
157 | * Fix - Hiding 'View Certificate' link if no certificate template is selected for the course
158 |
159 | 2014.03.04 - version 1.0.3
160 | * Fix - Switching background image to use path instead of URL
161 | /classes/class-woothemes-sensei-certificates.php
162 |
163 | 2014.01.14 - version 1.0.2
164 | * Fix - Removes unnecessary rewrite endpoints, in favour of template_redirect.
165 | /classes/class-woothemes-sensei-certificates.php
166 |
167 | * Fix - Optimise the functionality to control access to, and to generate the certificate.
168 | /classes/class-woothemes-sensei-certificates.php
169 |
170 | * Fix - Ensure the extension doesn't break if a WooCommerce extension is activated.
171 | /woo-includes/woo-functions.php
172 | /woo-includes/class-wc-dependencies.php
173 |
174 | 2013.12.12 - version 1.0.1
175 | * /classes/class-woothemes-sensei-certificate-templates.php - Localization fix
176 | * /classes/class-woothemes-sensei-certificates.php - Localization fix
177 | * /woothemes-sensei-certificates.php - Localization fix
178 |
179 | 2013.12.12 - version 1.0.0
180 | * First release
181 |
--------------------------------------------------------------------------------
/classes/background-jobs/class-sensei-certificates-create-certificates.php:
--------------------------------------------------------------------------------
1 | get_offset();
76 |
77 | if ( ! sensei_update_users_certificate_data( self::BATCH_SIZE, $offset ) ) {
78 | $this->set_offset( $offset + self::BATCH_SIZE );
79 | } else {
80 | $this->end();
81 | }
82 | }
83 |
84 | /**
85 | * After the job runs, check to see if it needs to be re-queued for the next batch.
86 | *
87 | * @return bool
88 | */
89 | public function is_complete() {
90 | return $this->is_complete;
91 | }
92 |
93 | /**
94 | * Set up the job.
95 | */
96 | public function setup() {
97 | $this->set_offset( 0 );
98 | }
99 |
100 | /**
101 | * Clean up when a job is finished or has been cancelled.
102 | */
103 | public function end() {
104 | $this->delete_state();
105 | $this->is_complete = true;
106 | }
107 |
108 | /**
109 | * Get the progress of the job.
110 | *
111 | * @return false|float
112 | */
113 | public function get_progress() {
114 | if ( ! $this->has_state() ) {
115 | return false;
116 | }
117 |
118 | $user_count = count_users();
119 | $total_users = $user_count['total_users'];
120 | $done = min( $this->get_offset(), $user_count );
121 |
122 | return round( ( $done / $total_users ) * 100 );
123 | }
124 |
125 | /**
126 | * Is the job currently running?
127 | *
128 | * @return bool True if job is running.
129 | */
130 | public function is_running() {
131 | return false !== $this->has_state();
132 | }
133 |
134 | /**
135 | * Set the offset.
136 | *
137 | * @param int $offset Offset for job.
138 | */
139 | private function set_offset( $offset ) {
140 | $state = $this->get_state();
141 | $state['offset'] = (int) $offset;
142 |
143 | $this->save_state( $state );
144 | }
145 |
146 | /**
147 | * Get the offset.
148 | *
149 | * @return int
150 | */
151 | private function get_offset() {
152 | $state = $this->get_state();
153 |
154 | return (int) $state['offset'];
155 | }
156 |
157 | /**
158 | * Get the state of the job.
159 | */
160 | private function get_state() {
161 | $state = get_transient( self::STATE_TRANSIENT );
162 |
163 | $default_state = array(
164 | 'offset' => 0,
165 | );
166 |
167 | if ( $state ) {
168 | return array_merge( $default_state, (array) $state );
169 | }
170 |
171 | return $default_state;
172 | }
173 |
174 | /**
175 | * Set the state for the job.
176 | *
177 | * @param array $state State to set.
178 | */
179 | private function save_state( $state ) {
180 | set_transient( self::STATE_TRANSIENT, $state, HOUR_IN_SECONDS );
181 | }
182 |
183 | /**
184 | * Delete the state and end the job.
185 | */
186 | private function delete_state() {
187 | delete_transient( self::STATE_TRANSIENT );
188 | }
189 |
190 | /**
191 | * Check if the job has been started and state is set.
192 | */
193 | private function has_state() {
194 | $state = get_transient( self::STATE_TRANSIENT );
195 |
196 | return false !== $state;
197 | }
198 | }
199 |
--------------------------------------------------------------------------------
/classes/blocks/class-woothemes-sensei-certificates-view-certificate-link-block.php:
--------------------------------------------------------------------------------
1 | [ $this, 'render' ],
25 | ],
26 | WooThemes_Sensei_Certificates::instance()->assets->src_path( 'blocks/view-certificate-link' )
27 | );
28 | }
29 |
30 | /**
31 | * Renders View Certificate Link block on the frontend.
32 | *
33 | * @param array $attributes Block attributes.
34 | * @param string $content Inner block content.
35 | *
36 | * @return string HTML of the block.
37 | */
38 | public function render( array $attributes, string $content ): string {
39 | $course_id = \Sensei_Utils::get_current_course();
40 |
41 | // Check that the user has completed the course and it has a certificate
42 | // template.
43 | if (
44 | ! $course_id
45 | || ! get_current_user_id()
46 | || 'course' !== get_post_type( $course_id )
47 | || ! get_post_meta( $course_id, '_course_certificate_template', true )
48 | || ! Sensei_Utils::user_completed_course( $course_id, get_current_user_id() )
49 | ) {
50 | return '';
51 | }
52 |
53 | $certificate_url = WooThemes_Sensei_Certificates::instance()->get_certificate_url(
54 | $course_id,
55 | get_current_user_id()
56 | );
57 |
58 | // Ensure the certificate URL exists.
59 | if ( ! $certificate_url ) {
60 | return '';
61 | }
62 |
63 | $wrapper_attributes = get_block_wrapper_attributes();
64 |
65 | return sprintf(
66 | '',
67 | $wrapper_attributes,
68 | $certificate_url,
69 | __( 'View Certificate', 'sensei-certificates' )
70 | );
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/classes/class-sensei-certificate-data-cleaner.php:
--------------------------------------------------------------------------------
1 | $post_type,
155 | 'post_status' => 'any',
156 | 'numberposts' => -1,
157 | 'fields' => 'ids',
158 | )
159 | );
160 |
161 | foreach ( $items as $item ) {
162 | wp_trash_post( $item );
163 | }
164 | }
165 | }
166 |
167 | /**
168 | * Cleanup data for attachments.
169 | */
170 | private static function cleanup_attachments() {
171 | global $wpdb;
172 |
173 | foreach ( self::$attachment_guids as $attachment_guid ) {
174 | $attachments = $wpdb->get_results(
175 | $wpdb->prepare(
176 | "SELECT ID FROM $wpdb->posts
177 | WHERE post_type = 'attachment'
178 | AND guid RLIKE %s",
179 | $attachment_guid
180 | )
181 | );
182 |
183 | foreach ( $attachments as $attachment ) {
184 | wp_delete_attachment( $attachment->ID );
185 | }
186 | }
187 | }
188 |
189 | /**
190 | * Cleanup Sensei settings.
191 | */
192 | private static function cleanup_settings() {
193 | $settings = get_option( 'sensei-settings' );
194 |
195 | if ( ! $settings ) {
196 | return;
197 | }
198 |
199 | $settings_fields = WooThemes_Sensei_Certificates::instance()->certificates_settings_fields( [] );
200 | foreach ( $settings_fields as $field_key => $field_data ) {
201 | unset( $settings[ $field_key ] );
202 | }
203 |
204 | delete_option( 'sensei-settings' );
205 | update_option( 'sensei-settings', $settings );
206 | }
207 |
208 | /**
209 | * Cleanup data for options.
210 | */
211 | private static function cleanup_options() {
212 | foreach ( self::$options as $option ) {
213 | delete_option( $option );
214 | }
215 | }
216 |
217 | /**
218 | * Cleanup data for user/role capabilities.
219 | */
220 | private static function cleanup_capabilities() {
221 | global $wp_roles;
222 |
223 | // Remove caps from roles.
224 | $role_names = array_keys( $wp_roles->roles );
225 | foreach ( $role_names as $role_name ) {
226 | $role = get_role( $role_name );
227 | self::remove_capabilities( $role );
228 | }
229 |
230 | // Remove caps from users.
231 | $users = get_users( array() );
232 | foreach ( $users as $user ) {
233 | self::remove_capabilities( $user );
234 | }
235 | }
236 |
237 | /**
238 | * Helper method to remove capabilities from a user or role object.
239 | *
240 | * @param (WP_User|WP_Role) $object the user or role object.
241 | */
242 | private static function remove_capabilities( $object ) {
243 | foreach ( self::$caps as $cap ) {
244 | $object->remove_cap( $cap );
245 | }
246 | }
247 |
248 | /**
249 | * Cleanup transients from the database.
250 | */
251 | private static function cleanup_transients() {
252 | global $wpdb;
253 |
254 | foreach ( array( '_transient_', '_transient_timeout_' ) as $prefix ) {
255 | foreach ( self::$transients as $transient ) {
256 | $wpdb->query(
257 | $wpdb->prepare(
258 | "DELETE FROM $wpdb->options WHERE option_name RLIKE %s",
259 | $prefix . $transient
260 | )
261 | );
262 | }
263 | }
264 | }
265 |
266 | /**
267 | * Cleanup Sensei user meta from the database.
268 | */
269 | private static function cleanup_user_meta() {
270 | global $wpdb;
271 |
272 | foreach ( self::$user_meta_keys as $meta_key ) {
273 | $meta_key = str_replace( '%BLOG_PREFIX%', preg_quote( $wpdb->get_blog_prefix(), null ), $meta_key );
274 |
275 | $wpdb->query(
276 | $wpdb->prepare(
277 | "DELETE FROM $wpdb->usermeta WHERE meta_key RLIKE %s",
278 | $meta_key
279 | )
280 | );
281 | }
282 | }
283 |
284 | /**
285 | * Cleanup post meta that doesn't get deleted automatically.
286 | */
287 | private static function cleanup_post_meta() {
288 | global $wpdb;
289 |
290 | foreach ( self::$post_meta as $post_meta ) {
291 | $wpdb->delete( $wpdb->postmeta, array( 'meta_key' => $post_meta ) );
292 | }
293 | }
294 | }
295 |
--------------------------------------------------------------------------------
/classes/class-vip-tfpdf.php:
--------------------------------------------------------------------------------
1 | init_wp_filesystem();
17 | }
18 |
19 | private function init_wp_filesystem() {
20 | global $wp_filesystem;
21 |
22 | if ( ! is_a( $wp_filesystem, 'WP_Filesystem_Base' ) ) {
23 | ob_start();
24 | $creds = request_filesystem_credentials( site_url() );
25 | ob_end_clean();
26 |
27 | if ( false === $creds ) {
28 | return new WP_Error( 'fs-init-error', "Couldn't initialize Filesystem" );
29 | } else {
30 | return wp_filesystem( $creds );
31 | }
32 | }
33 |
34 | return true;
35 | }
36 |
37 | /**
38 | * This is a thin wrapper around tFPDF's Image method.
39 | * In certain cases direct access to the uploads folder is prohibited,
40 | * or uploaded file might not be physically present (when using WP_Filesystem_SSH2, WP_Filesystem_ftpsockets, etc)
41 | * We get around that by creating the in the system's temporary folder, performing the necessary operations on that file, and then deleting it.
42 | *
43 | * @param string $file full path to the file
44 | * @param [type] $x
45 | * @param [type] $y
46 | * @param integer $w
47 | * @param integer $h
48 | * @param string $type
49 | * @param string $link
50 | * @return void
51 | */
52 | public function Image( $file = '', $x = null, $y = null, $w = 0, $h = 0, $type = '', $link = '' ) {
53 | global $wp_filesystem;
54 | if ( ! is_writable( sys_get_temp_dir() ) ) {
55 | $this->Error( 'Unable to access the file system' );
56 | }
57 |
58 | $filestring = $wp_filesystem->get_contents( $file );
59 |
60 | $file = sys_get_temp_dir() . DIRECTORY_SEPARATOR . basename( $file );
61 | $fhandle = fopen( $file, 'wb' );
62 | fwrite( $fhandle, $filestring );
63 | fclose( $fhandle );
64 | parent::Image( $file, $x, $y, $w, $h, $type, $link );
65 | unlink( $file );
66 | }
67 |
68 | /**
69 | * Throws error.
70 | *
71 | * @param string $str_message
72 | *
73 | * @throws \RuntimeException On error.
74 | */
75 | private function Error( $str_message ) {
76 | // Fatal error.
77 | throw new \RuntimeException( 'FPDF Error: ' . $str_message );
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/classes/class-woothemes-sensei-certificates-data-store.php:
--------------------------------------------------------------------------------
1 | 'certificate',
26 | 'post_status' => 'any',
27 | 'posts_per_page' => 1,
28 | 'title' => $certificate_hash,
29 | )
30 | );
31 | if ( $certificate_query->have_posts() ) {
32 | return new WP_Error( 'sensei_certificates_duplicate' );
33 | }
34 |
35 | // Insert custom post type
36 | $cert_args = array(
37 | 'post_author' => intval( $user_id ),
38 | 'post_title' => $certificate_hash,
39 | 'post_name' => $certificate_hash,
40 | 'post_type' => 'certificate',
41 | 'post_status' => 'publish',
42 | );
43 | $post_id = wp_insert_post( $cert_args, $wp_error = false );
44 |
45 | if ( ! is_wp_error( $post_id ) ) {
46 | add_post_meta( $post_id, 'course_id', absint( $course_id ) );
47 | add_post_meta( $post_id, 'learner_id', absint( $user_id ) );
48 | add_post_meta( $post_id, 'certificate_hash', $certificate_hash );
49 | } // End If Statement
50 | return $post_id;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/classes/class-woothemes-sensei-certificates-dependency-checker.php:
--------------------------------------------------------------------------------
1 | =' );
54 | }
55 |
56 | /**
57 | * Deactivate self.
58 | */
59 | public static function deactivate_self() {
60 | deactivate_plugins( SENSEI_CERTIFICATES_PLUGIN_BASENAME );
61 | }
62 |
63 | /**
64 | * Checks for our Sensei dependency.
65 | *
66 | * @return bool
67 | */
68 | private static function check_sensei() {
69 | if ( ! class_exists( 'Sensei_Main' ) ) {
70 | return false;
71 | }
72 |
73 | // As long as we support 1.x, we need to also check this option.
74 | $legacy_version = get_option( 'woothemes-sensei-version' );
75 | return version_compare( self::MINIMUM_SENSEI_VERSION, get_option( 'sensei-version', $legacy_version ), '<=' );
76 | }
77 |
78 | /**
79 | * Adds notice in WP Admin that minimum version of PHP is not met.
80 | *
81 | * @access private
82 | */
83 | public static function add_php_notice() {
84 | $screen = get_current_screen();
85 | $valid_screens = array( 'dashboard', 'plugins' );
86 |
87 | if ( ! current_user_can( 'activate_plugins' ) || ! in_array( $screen->id, $valid_screens, true ) ) {
88 | return;
89 | }
90 |
91 | // translators: %1$s is version of PHP that this plugin requires; %2$s is the version of PHP WordPress is running on.
92 | $message = sprintf( __( 'Sensei LMS Certificates requires a minimum PHP version of %1$s, but you are running %2$s.', 'sensei-certificates' ), self::MINIMUM_PHP_VERSION, phpversion() );
93 | echo '';
94 | echo wp_kses( $message, array( 'strong' => array() ) );
95 | $php_update_url = 'https://wordpress.org/support/update-php/';
96 | if ( function_exists( 'wp_get_update_php_url' ) ) {
97 | $php_update_url = wp_get_update_php_url();
98 | }
99 | printf(
100 | '
%2$s %3$s
',
101 | esc_url( $php_update_url ),
102 | esc_html__( 'Learn more about updating PHP', 'sensei-certificates' ),
103 | /* translators: accessibility text */
104 | esc_html__( '(opens in a new tab)', 'sensei-certificates' )
105 | );
106 | echo '
';
107 | }
108 |
109 | /**
110 | * Adds the notice in WP Admin that Sensei is required.
111 | *
112 | * @access private
113 | */
114 | public static function add_sensei_notice() {
115 | $screen = get_current_screen();
116 | $valid_screens = array( 'dashboard', 'plugins' );
117 |
118 | if ( ! current_user_can( 'activate_plugins' ) || ! in_array( $screen->id, $valid_screens, true ) ) {
119 | return;
120 | }
121 |
122 | // translators: %1$s is the minimum version number of Sensei that is required.
123 | $message = sprintf( __( 'Sensei LMS Certificates requires that the plugin Sensei (minimum version: %1$s) is installed and activated.', 'sensei-certificates' ), self::MINIMUM_SENSEI_VERSION );
124 | echo '';
125 | echo wp_kses( $message, array( 'strong' => array() ) );
126 | echo '
';
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/classes/class-woothemes-sensei-certificates-tfpdf.php:
--------------------------------------------------------------------------------
1 | output();
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/classes/class-woothemes-sensei-certificates-utils.php:
--------------------------------------------------------------------------------
1 | job = Sensei_Certificates_Create_Certificates::instance();
31 |
32 | add_action( 'sensei_tools_listing_after_' . $this->get_id(), array( $this, 'add_status_notice' ) );
33 | }
34 |
35 | /**
36 | * Get the ID of the tool.
37 | *
38 | * @return string
39 | */
40 | public function get_id() {
41 | return 'sensei-certificates-create-certificates';
42 | }
43 |
44 | /**
45 | * Get the name of the tool.
46 | *
47 | * @return string
48 | */
49 | public function get_name() {
50 | return __( 'Create certificates', 'sensei-certificates' );
51 | }
52 |
53 | /**
54 | * Get the description of the tool.
55 | *
56 | * @return string
57 | */
58 | public function get_description() {
59 | return __( 'Creates certificates for learners who have already completed Courses.', 'sensei-certificates' );
60 | }
61 |
62 | /**
63 | * Run the tool.
64 | */
65 | public function process() {
66 | $this->job->setup();
67 |
68 | Sensei_Scheduler::instance()->schedule_job( $this->job );
69 | Sensei_Tools::instance()->add_user_message( __( 'Certificate records will be created in the background.', 'sensei-certificates' ) );
70 | }
71 |
72 | /**
73 | * Is the tool currently available?
74 | *
75 | * @return bool True if tool is available.
76 | */
77 | public function is_available() {
78 | return ! $this->job->is_running();
79 | }
80 |
81 | /**
82 | * Add the status notice when running.
83 | */
84 | public function add_status_notice() {
85 | if ( ! $this->job->is_running() ) {
86 | return;
87 | }
88 |
89 | echo '';
90 | // translators: Placeholder %d is the percentage complete.
91 | echo esc_html( sprintf( __( 'This task is running in the background and is %d%% complete.', 'sensei-certificates' ), $this->job->get_progress() ) );
92 | echo '
';
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/classes/tools/class-sensei-certificates-tool-create-default-example-template.php:
--------------------------------------------------------------------------------
1 | add_user_message( __( 'Example certificate template has been created and all courses have been set to use it.', 'sensei-certificates' ) );
53 | }
54 |
55 | /**
56 | * Is the tool currently available?
57 | *
58 | * @return bool True if tool is available.
59 | */
60 | public function is_available() {
61 | return true;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "automattic/sensei-certificates",
3 | "description": "Sensei LMS Certificates",
4 | "require-dev": {
5 | "php": "^7 || ^8",
6 | "dealerdirect/phpcodesniffer-composer-installer": "0.7.1",
7 | "phpcompatibility/phpcompatibility-wp": "2.1.1",
8 | "squizlabs/php_codesniffer": "3.5.8",
9 | "wp-coding-standards/wpcs": "2.3.0"
10 | },
11 | "archive": {
12 | "exclude": [
13 | "/*",
14 | "!/admin",
15 | "!/assets/dist",
16 | "/assets/dist/css/*.js",
17 | "!/assets/images",
18 | "!/classes",
19 | "!/lang",
20 | "!/lib/tfpdf/tFPDF/*.php",
21 | "!/lib/tfpdf/font/*.php",
22 | "!/lib/tfpdf/font/unifont/*.php",
23 | "!/lib/tfpdf/font/unifont/*.ttf",
24 | "!/lib/tfpdf/font/unifont/*.dat",
25 | "!/templates",
26 | "!/changelog.txt",
27 | "!/LICENSE",
28 | "!/readme.txt",
29 | "!/widgets",
30 | "!/sensei-certificates-functions.php",
31 | "!/woothemes-sensei-certificates.php",
32 | ".DS_Store",
33 | ".*",
34 | "*.test.js"
35 | ]
36 | },
37 | "config": {
38 | "allow-plugins": {
39 | "dealerdirect/phpcodesniffer-composer-installer": true
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lang/sensei-certificates-de_DE.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lang/sensei-certificates-de_DE.mo
--------------------------------------------------------------------------------
/lang/sensei-certificates-fr_FR.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lang/sensei-certificates-fr_FR.mo
--------------------------------------------------------------------------------
/lang/sensei-certificates-hu_HU.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lang/sensei-certificates-hu_HU.mo
--------------------------------------------------------------------------------
/lang/sensei-certificates-ru_RU.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lang/sensei-certificates-ru_RU.mo
--------------------------------------------------------------------------------
/lib/tfpdf/FPDFException.php:
--------------------------------------------------------------------------------
1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
8 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
9 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
10 | 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
11 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
12 | 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
13 | chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
14 | chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
16 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
18 | chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/helveticab.php:
--------------------------------------------------------------------------------
1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
8 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
9 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
10 | 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
11 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
12 | 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
13 | chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
14 | chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
16 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
18 | chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/helveticabi.php:
--------------------------------------------------------------------------------
1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
8 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
9 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
10 | 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
11 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
12 | 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
13 | chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
14 | chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
16 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
18 | chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/helveticai.php:
--------------------------------------------------------------------------------
1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
8 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
9 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
10 | 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
11 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
12 | 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
13 | chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
14 | chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
16 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
18 | chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/symbol.php:
--------------------------------------------------------------------------------
1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
8 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
9 | ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
10 | 'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
11 | 'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
12 | 'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
13 | chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
14 | chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
15 | chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
16 | chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
17 | chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
18 | chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/times.php:
--------------------------------------------------------------------------------
1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
8 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
9 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
10 | 'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
11 | 'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
12 | 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
13 | chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
14 | chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
16 | chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
18 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/timesb.php:
--------------------------------------------------------------------------------
1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
8 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
9 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
10 | 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
11 | 'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
12 | 'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
13 | chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
14 | chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
16 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
18 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/timesbi.php:
--------------------------------------------------------------------------------
1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
8 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
9 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
10 | 'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
11 | 'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
12 | 'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
13 | chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
14 | chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
16 | chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
18 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/timesi.php:
--------------------------------------------------------------------------------
1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
8 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
9 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
10 | 'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
11 | 'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
12 | 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
13 | chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
14 | chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
15 | chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
16 | chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
17 | chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
18 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSans-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSans-Bold.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSans-BoldOblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSans-BoldOblique.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSans-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSans-ExtraLight.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSans-Oblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSans-Oblique.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSans.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSans.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansCondensed-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansCondensed-Bold.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansCondensed-BoldOblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansCondensed-BoldOblique.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansCondensed-Oblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansCondensed-Oblique.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansCondensed.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansCondensed.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansMono-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansMono-Bold.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansMono-BoldOblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansMono-BoldOblique.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansMono-Oblique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansMono-Oblique.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSansMono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSansMono.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerif-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerif-Bold.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerif-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerif-BoldItalic.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerif-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerif-Italic.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerif.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerif.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerifCondensed-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerifCondensed-Bold.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerifCondensed-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerifCondensed-BoldItalic.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerifCondensed-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerifCondensed-Italic.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVuSerifCondensed.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/DejaVuSerifCondensed.ttf
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/DejaVu_LICENSE.txt:
--------------------------------------------------------------------------------
1 | Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
2 | Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
3 |
4 | Bitstream Vera Fonts Copyright
5 | ------------------------------
6 |
7 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
8 | a trademark of Bitstream, Inc.
9 |
10 | Permission is hereby granted, free of charge, to any person obtaining a copy
11 | of the fonts accompanying this license ("Fonts") and associated
12 | documentation files (the "Font Software"), to reproduce and distribute the
13 | Font Software, including without limitation the rights to use, copy, merge,
14 | publish, distribute, and/or sell copies of the Font Software, and to permit
15 | persons to whom the Font Software is furnished to do so, subject to the
16 | following conditions:
17 |
18 | The above copyright and trademark notices and this permission notice shall
19 | be included in all copies of one or more of the Font Software typefaces.
20 |
21 | The Font Software may be modified, altered, or added to, and in particular
22 | the designs of glyphs or characters in the Fonts may be modified and
23 | additional glyphs or characters may be added to the Fonts, only if the fonts
24 | are renamed to names not containing either the words "Bitstream" or the word
25 | "Vera".
26 |
27 | This License becomes null and void to the extent applicable to Fonts or Font
28 | Software that has been modified and is distributed under the "Bitstream
29 | Vera" names.
30 |
31 | The Font Software may be sold as part of a larger software package but no
32 | copy of one or more of the Font Software typefaces may be sold by itself.
33 |
34 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
35 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
36 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
37 | TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
38 | FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
39 | ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
40 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
41 | THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
42 | FONT SOFTWARE.
43 |
44 | Except as contained in this notice, the names of Gnome, the Gnome
45 | Foundation, and Bitstream Inc., shall not be used in advertising or
46 | otherwise to promote the sale, use or other dealings in this Font Software
47 | without prior written authorization from the Gnome Foundation or Bitstream
48 | Inc., respectively. For further information, contact: fonts at gnome dot
49 | org.
50 |
51 | Arev Fonts Copyright
52 | ------------------------------
53 |
54 | Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
55 |
56 | Permission is hereby granted, free of charge, to any person obtaining
57 | a copy of the fonts accompanying this license ("Fonts") and
58 | associated documentation files (the "Font Software"), to reproduce
59 | and distribute the modifications to the Bitstream Vera Font Software,
60 | including without limitation the rights to use, copy, merge, publish,
61 | distribute, and/or sell copies of the Font Software, and to permit
62 | persons to whom the Font Software is furnished to do so, subject to
63 | the following conditions:
64 |
65 | The above copyright and trademark notices and this permission notice
66 | shall be included in all copies of one or more of the Font Software
67 | typefaces.
68 |
69 | The Font Software may be modified, altered, or added to, and in
70 | particular the designs of glyphs or characters in the Fonts may be
71 | modified and additional glyphs or characters may be added to the
72 | Fonts, only if the fonts are renamed to names not containing either
73 | the words "Tavmjong Bah" or the word "Arev".
74 |
75 | This License becomes null and void to the extent applicable to Fonts
76 | or Font Software that has been modified and is distributed under the
77 | "Tavmjong Bah Arev" names.
78 |
79 | The Font Software may be sold as part of a larger software package but
80 | no copy of one or more of the Font Software typefaces may be sold by
81 | itself.
82 |
83 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
84 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
85 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
86 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
87 | TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
88 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
89 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
90 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
91 | OTHER DEALINGS IN THE FONT SOFTWARE.
92 |
93 | Except as contained in this notice, the name of Tavmjong Bah shall not
94 | be used in advertising or otherwise to promote the sale, use or other
95 | dealings in this Font Software without prior written authorization
96 | from Tavmjong Bah. For further information, contact: tavmjong @ free
97 | . fr.
98 |
99 | $Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $
100 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-bold-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 348,
10 | 1 => 456,
11 | 2 => 521,
12 | 3 => 838,
13 | 4 => 696,
14 | 5 => 1002,
15 | 6 => 872,
16 | 7 => 306,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 457,
21 | 1 => 457,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 523,
27 | 1 => 838,
28 | 2 => 380,
29 | 3 => 415,
30 | 4 => 380,
31 | 5 => 365,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 696,
36 | 1 => 696,
37 | 'interval' => true,
38 | 2 => 696,
39 | 3 => 696,
40 | 4 => 696,
41 | 5 => 696,
42 | 6 => 696,
43 | 7 => 696,
44 | 8 => 696,
45 | 9 => 696,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 400,
50 | 1 => 400,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 580,
63 | 1 => 1000,
64 | 2 => 774,
65 | 3 => 762,
66 | 4 => 734,
67 | 5 => 830,
68 | ),
69 | 69 =>
70 | array (
71 | 0 => 683,
72 | 1 => 683,
73 | 'interval' => true,
74 | ),
75 | 71 =>
76 | array (
77 | 0 => 821,
78 | 1 => 837,
79 | ),
80 | 73 =>
81 | array (
82 | 0 => 372,
83 | 1 => 372,
84 | 'interval' => true,
85 | ),
86 | 75 =>
87 | array (
88 | 0 => 775,
89 | 1 => 637,
90 | 2 => 995,
91 | 3 => 837,
92 | 4 => 850,
93 | 5 => 733,
94 | 6 => 850,
95 | 7 => 770,
96 | 8 => 720,
97 | 9 => 682,
98 | 10 => 812,
99 | 11 => 774,
100 | 12 => 1103,
101 | 13 => 771,
102 | 14 => 724,
103 | 15 => 725,
104 | 16 => 457,
105 | 17 => 365,
106 | 18 => 457,
107 | 19 => 838,
108 | ),
109 | 95 =>
110 | array (
111 | 0 => 500,
112 | 1 => 500,
113 | 'interval' => true,
114 | ),
115 | 97 =>
116 | array (
117 | 0 => 675,
118 | 1 => 716,
119 | 2 => 593,
120 | 3 => 716,
121 | 4 => 678,
122 | 5 => 435,
123 | 6 => 716,
124 | 7 => 712,
125 | ),
126 | 105 =>
127 | array (
128 | 0 => 343,
129 | 1 => 343,
130 | 'interval' => true,
131 | ),
132 | 107 =>
133 | array (
134 | 0 => 665,
135 | 1 => 343,
136 | 2 => 1042,
137 | 3 => 712,
138 | 4 => 687,
139 | ),
140 | 112 =>
141 | array (
142 | 0 => 716,
143 | 1 => 716,
144 | 'interval' => true,
145 | ),
146 | 114 =>
147 | array (
148 | 0 => 493,
149 | 1 => 595,
150 | 2 => 478,
151 | 3 => 712,
152 | 4 => 652,
153 | 5 => 924,
154 | 6 => 645,
155 | 7 => 652,
156 | 8 => 582,
157 | 9 => 712,
158 | 10 => 365,
159 | 11 => 712,
160 | 12 => 838,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-bold-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusans-bold-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-bold-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 262148,
9 | 'FontBBox' => '[-1069 -415 1975 1174]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSans-Bold.ttf';
17 | $originalsize=672300;
18 | $fontkey='dejavusansB';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-boldoblique-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 348,
10 | 1 => 456,
11 | 2 => 521,
12 | ),
13 | 35 =>
14 | array (
15 | 0 => 696,
16 | 1 => 696,
17 | 'interval' => true,
18 | ),
19 | 37 =>
20 | array (
21 | 0 => 1002,
22 | 1 => 872,
23 | 2 => 306,
24 | ),
25 | 40 =>
26 | array (
27 | 0 => 457,
28 | 1 => 457,
29 | 'interval' => true,
30 | ),
31 | 42 =>
32 | array (
33 | 0 => 523,
34 | 1 => 838,
35 | 2 => 380,
36 | 3 => 415,
37 | 4 => 380,
38 | 5 => 365,
39 | ),
40 | 48 =>
41 | array (
42 | 0 => 696,
43 | 1 => 696,
44 | 'interval' => true,
45 | 2 => 696,
46 | 3 => 696,
47 | 4 => 696,
48 | 5 => 696,
49 | 6 => 696,
50 | 7 => 696,
51 | 8 => 696,
52 | 9 => 696,
53 | ),
54 | 58 =>
55 | array (
56 | 0 => 400,
57 | 1 => 400,
58 | 'interval' => true,
59 | ),
60 | 60 =>
61 | array (
62 | 0 => 838,
63 | 1 => 838,
64 | 'interval' => true,
65 | 2 => 838,
66 | ),
67 | 63 =>
68 | array (
69 | 0 => 580,
70 | 1 => 1000,
71 | 2 => 774,
72 | 3 => 762,
73 | 4 => 734,
74 | 5 => 830,
75 | ),
76 | 69 =>
77 | array (
78 | 0 => 683,
79 | 1 => 683,
80 | 'interval' => true,
81 | ),
82 | 71 =>
83 | array (
84 | 0 => 821,
85 | 1 => 837,
86 | ),
87 | 73 =>
88 | array (
89 | 0 => 372,
90 | 1 => 372,
91 | 'interval' => true,
92 | ),
93 | 75 =>
94 | array (
95 | 0 => 775,
96 | 1 => 637,
97 | 2 => 995,
98 | 3 => 837,
99 | 4 => 850,
100 | 5 => 733,
101 | 6 => 850,
102 | 7 => 770,
103 | 8 => 720,
104 | 9 => 682,
105 | 10 => 812,
106 | 11 => 774,
107 | 12 => 1103,
108 | 13 => 771,
109 | 14 => 724,
110 | 15 => 725,
111 | 16 => 457,
112 | 17 => 365,
113 | 18 => 457,
114 | 19 => 838,
115 | ),
116 | 95 =>
117 | array (
118 | 0 => 500,
119 | 1 => 500,
120 | 'interval' => true,
121 | ),
122 | 97 =>
123 | array (
124 | 0 => 675,
125 | 1 => 716,
126 | 2 => 593,
127 | 3 => 716,
128 | 4 => 678,
129 | 5 => 435,
130 | 6 => 716,
131 | 7 => 712,
132 | ),
133 | 105 =>
134 | array (
135 | 0 => 343,
136 | 1 => 343,
137 | 'interval' => true,
138 | ),
139 | 107 =>
140 | array (
141 | 0 => 665,
142 | 1 => 343,
143 | 2 => 1042,
144 | 3 => 712,
145 | 4 => 687,
146 | ),
147 | 112 =>
148 | array (
149 | 0 => 716,
150 | 1 => 716,
151 | 'interval' => true,
152 | ),
153 | 114 =>
154 | array (
155 | 0 => 493,
156 | 1 => 595,
157 | 2 => 478,
158 | 3 => 712,
159 | 4 => 652,
160 | 5 => 924,
161 | 6 => 645,
162 | 7 => 652,
163 | 8 => 582,
164 | 9 => 712,
165 | 10 => 365,
166 | 11 => 712,
167 | 12 => 838,
168 | ),
169 | );
170 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-boldoblique-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusans-boldoblique-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-boldoblique-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 262212,
9 | 'FontBBox' => '[-1067 -385 1999 1121]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSans-BoldOblique.ttf';
17 | $originalsize=611212;
18 | $fontkey='dejavusansBI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 318,
10 | 1 => 401,
11 | 2 => 460,
12 | 3 => 838,
13 | 4 => 636,
14 | 5 => 950,
15 | 6 => 780,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 390,
21 | 1 => 390,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 500,
27 | 1 => 838,
28 | 2 => 318,
29 | 3 => 361,
30 | 4 => 318,
31 | 5 => 337,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 636,
36 | 1 => 636,
37 | 'interval' => true,
38 | 2 => 636,
39 | 3 => 636,
40 | 4 => 636,
41 | 5 => 636,
42 | 6 => 636,
43 | 7 => 636,
44 | 8 => 636,
45 | 9 => 636,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 337,
50 | 1 => 337,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 531,
63 | 1 => 1000,
64 | 2 => 684,
65 | 3 => 686,
66 | 4 => 698,
67 | 5 => 770,
68 | 6 => 632,
69 | 7 => 575,
70 | 8 => 775,
71 | 9 => 752,
72 | ),
73 | 73 =>
74 | array (
75 | 0 => 295,
76 | 1 => 295,
77 | 'interval' => true,
78 | ),
79 | 75 =>
80 | array (
81 | 0 => 656,
82 | 1 => 557,
83 | 2 => 863,
84 | 3 => 748,
85 | 4 => 787,
86 | 5 => 603,
87 | 6 => 787,
88 | 7 => 695,
89 | 8 => 635,
90 | 9 => 611,
91 | 10 => 732,
92 | 11 => 684,
93 | 12 => 989,
94 | 13 => 685,
95 | 14 => 611,
96 | 15 => 685,
97 | 16 => 390,
98 | 17 => 337,
99 | 18 => 390,
100 | 19 => 838,
101 | ),
102 | 95 =>
103 | array (
104 | 0 => 500,
105 | 1 => 500,
106 | 'interval' => true,
107 | ),
108 | 97 =>
109 | array (
110 | 0 => 613,
111 | 1 => 635,
112 | 2 => 550,
113 | 3 => 635,
114 | 4 => 615,
115 | 5 => 352,
116 | 6 => 635,
117 | 7 => 634,
118 | ),
119 | 105 =>
120 | array (
121 | 0 => 278,
122 | 1 => 278,
123 | 'interval' => true,
124 | ),
125 | 107 =>
126 | array (
127 | 0 => 579,
128 | 1 => 278,
129 | 2 => 974,
130 | 3 => 634,
131 | 4 => 612,
132 | ),
133 | 112 =>
134 | array (
135 | 0 => 635,
136 | 1 => 635,
137 | 'interval' => true,
138 | ),
139 | 114 =>
140 | array (
141 | 0 => 411,
142 | 1 => 521,
143 | 2 => 392,
144 | 3 => 634,
145 | 4 => 592,
146 | 5 => 818,
147 | ),
148 | 120 =>
149 | array (
150 | 0 => 592,
151 | 1 => 592,
152 | 'interval' => true,
153 | ),
154 | 122 =>
155 | array (
156 | 0 => 525,
157 | 1 => 636,
158 | 2 => 337,
159 | 3 => 636,
160 | 4 => 838,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusans-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-extralight-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 318,
10 | 1 => 401,
11 | 2 => 460,
12 | 3 => 838,
13 | 4 => 636,
14 | 5 => 950,
15 | 6 => 780,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 390,
21 | 1 => 390,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 500,
27 | 1 => 838,
28 | 2 => 318,
29 | 3 => 361,
30 | 4 => 318,
31 | 5 => 337,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 636,
36 | 1 => 636,
37 | 'interval' => true,
38 | 2 => 636,
39 | 3 => 636,
40 | 4 => 636,
41 | 5 => 636,
42 | 6 => 636,
43 | 7 => 636,
44 | 8 => 636,
45 | 9 => 636,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 337,
50 | 1 => 337,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 531,
63 | 1 => 1000,
64 | 2 => 684,
65 | 3 => 655,
66 | 4 => 698,
67 | 5 => 770,
68 | 6 => 632,
69 | 7 => 575,
70 | 8 => 775,
71 | 9 => 752,
72 | ),
73 | 73 =>
74 | array (
75 | 0 => 295,
76 | 1 => 295,
77 | 'interval' => true,
78 | ),
79 | 75 =>
80 | array (
81 | 0 => 656,
82 | 1 => 557,
83 | 2 => 863,
84 | 3 => 748,
85 | 4 => 787,
86 | 5 => 603,
87 | 6 => 787,
88 | 7 => 695,
89 | 8 => 635,
90 | 9 => 611,
91 | 10 => 732,
92 | 11 => 684,
93 | 12 => 989,
94 | 13 => 685,
95 | 14 => 611,
96 | 15 => 685,
97 | 16 => 390,
98 | 17 => 337,
99 | 18 => 390,
100 | 19 => 838,
101 | ),
102 | 95 =>
103 | array (
104 | 0 => 500,
105 | 1 => 500,
106 | 'interval' => true,
107 | ),
108 | 97 =>
109 | array (
110 | 0 => 613,
111 | 1 => 635,
112 | 2 => 550,
113 | 3 => 635,
114 | 4 => 615,
115 | 5 => 352,
116 | 6 => 600,
117 | 7 => 634,
118 | ),
119 | 105 =>
120 | array (
121 | 0 => 278,
122 | 1 => 278,
123 | 'interval' => true,
124 | ),
125 | 107 =>
126 | array (
127 | 0 => 579,
128 | 1 => 278,
129 | 2 => 974,
130 | 3 => 634,
131 | 4 => 612,
132 | ),
133 | 112 =>
134 | array (
135 | 0 => 635,
136 | 1 => 635,
137 | 'interval' => true,
138 | ),
139 | 114 =>
140 | array (
141 | 0 => 411,
142 | 1 => 521,
143 | 2 => 392,
144 | 3 => 634,
145 | 4 => 592,
146 | 5 => 818,
147 | ),
148 | 120 =>
149 | array (
150 | 0 => 592,
151 | 1 => 592,
152 | 'interval' => true,
153 | ),
154 | 122 =>
155 | array (
156 | 0 => 525,
157 | 1 => 636,
158 | 2 => 337,
159 | 3 => 636,
160 | 4 => 838,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-extralight-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusans-extralight-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-extralight-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 4,
9 | 'FontBBox' => '[-733 -269 1659 1104]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 59.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSans-ExtraLight.ttf';
17 | $originalsize=345208;
18 | $fontkey='dejavusans';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 4,
9 | 'FontBBox' => '[-1021 -415 1681 1167]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSans.ttf';
17 | $originalsize=720012;
18 | $fontkey='dejavusans';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-oblique-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 318,
10 | 1 => 401,
11 | 2 => 460,
12 | 3 => 838,
13 | 4 => 636,
14 | 5 => 950,
15 | 6 => 780,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 390,
21 | 1 => 390,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 500,
27 | 1 => 838,
28 | 2 => 318,
29 | 3 => 361,
30 | 4 => 318,
31 | 5 => 337,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 636,
36 | 1 => 636,
37 | 'interval' => true,
38 | 2 => 636,
39 | 3 => 636,
40 | 4 => 636,
41 | 5 => 636,
42 | 6 => 636,
43 | 7 => 636,
44 | 8 => 636,
45 | 9 => 636,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 337,
50 | 1 => 337,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 531,
63 | 1 => 1000,
64 | 2 => 684,
65 | 3 => 686,
66 | 4 => 698,
67 | 5 => 770,
68 | 6 => 632,
69 | 7 => 575,
70 | 8 => 775,
71 | 9 => 752,
72 | ),
73 | 73 =>
74 | array (
75 | 0 => 295,
76 | 1 => 295,
77 | 'interval' => true,
78 | ),
79 | 75 =>
80 | array (
81 | 0 => 656,
82 | 1 => 557,
83 | 2 => 863,
84 | 3 => 748,
85 | 4 => 787,
86 | 5 => 603,
87 | 6 => 787,
88 | 7 => 695,
89 | 8 => 635,
90 | 9 => 611,
91 | 10 => 732,
92 | 11 => 684,
93 | 12 => 989,
94 | 13 => 685,
95 | 14 => 611,
96 | 15 => 685,
97 | 16 => 390,
98 | 17 => 337,
99 | 18 => 390,
100 | 19 => 838,
101 | ),
102 | 95 =>
103 | array (
104 | 0 => 500,
105 | 1 => 500,
106 | 'interval' => true,
107 | ),
108 | 97 =>
109 | array (
110 | 0 => 613,
111 | 1 => 635,
112 | 2 => 550,
113 | 3 => 635,
114 | 4 => 615,
115 | 5 => 352,
116 | 6 => 635,
117 | 7 => 634,
118 | ),
119 | 105 =>
120 | array (
121 | 0 => 278,
122 | 1 => 278,
123 | 'interval' => true,
124 | ),
125 | 107 =>
126 | array (
127 | 0 => 579,
128 | 1 => 278,
129 | 2 => 974,
130 | 3 => 634,
131 | 4 => 612,
132 | ),
133 | 112 =>
134 | array (
135 | 0 => 635,
136 | 1 => 635,
137 | 'interval' => true,
138 | ),
139 | 114 =>
140 | array (
141 | 0 => 411,
142 | 1 => 521,
143 | 2 => 392,
144 | 3 => 634,
145 | 4 => 592,
146 | 5 => 818,
147 | ),
148 | 120 =>
149 | array (
150 | 0 => 592,
151 | 1 => 592,
152 | 'interval' => true,
153 | ),
154 | 122 =>
155 | array (
156 | 0 => 525,
157 | 1 => 636,
158 | 2 => 337,
159 | 3 => 636,
160 | 4 => 838,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-oblique-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusans-oblique-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusans-oblique-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 68,
9 | 'FontBBox' => '[-1016 -350 1659 1068]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSans-Oblique.ttf';
17 | $originalsize=611556;
18 | $fontkey='dejavusansI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-bold-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 313,
10 | 1 => 410,
11 | 2 => 469,
12 | 3 => 754,
13 | 4 => 626,
14 | 5 => 901,
15 | 6 => 785,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 411,
21 | 1 => 411,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 470,
27 | 1 => 754,
28 | 2 => 342,
29 | 3 => 374,
30 | 4 => 342,
31 | 5 => 329,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 626,
36 | 1 => 626,
37 | 'interval' => true,
38 | 2 => 626,
39 | 3 => 626,
40 | 4 => 626,
41 | 5 => 626,
42 | 6 => 626,
43 | 7 => 626,
44 | 8 => 626,
45 | 9 => 626,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 360,
50 | 1 => 360,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 522,
63 | 1 => 900,
64 | 2 => 696,
65 | 3 => 686,
66 | 4 => 660,
67 | 5 => 747,
68 | ),
69 | 69 =>
70 | array (
71 | 0 => 615,
72 | 1 => 615,
73 | 'interval' => true,
74 | ),
75 | 71 =>
76 | array (
77 | 0 => 738,
78 | 1 => 753,
79 | ),
80 | 73 =>
81 | array (
82 | 0 => 334,
83 | 1 => 334,
84 | 'interval' => true,
85 | ),
86 | 75 =>
87 | array (
88 | 0 => 697,
89 | 1 => 573,
90 | 2 => 896,
91 | 3 => 753,
92 | 4 => 765,
93 | 5 => 659,
94 | 6 => 765,
95 | 7 => 693,
96 | 8 => 648,
97 | 9 => 614,
98 | 10 => 730,
99 | 11 => 696,
100 | 12 => 993,
101 | 13 => 694,
102 | 14 => 651,
103 | 15 => 652,
104 | 16 => 411,
105 | 17 => 329,
106 | 18 => 411,
107 | 19 => 754,
108 | ),
109 | 95 =>
110 | array (
111 | 0 => 450,
112 | 1 => 450,
113 | 'interval' => true,
114 | ),
115 | 97 =>
116 | array (
117 | 0 => 607,
118 | 1 => 644,
119 | 2 => 533,
120 | 3 => 644,
121 | 4 => 610,
122 | 5 => 391,
123 | 6 => 644,
124 | 7 => 641,
125 | ),
126 | 105 =>
127 | array (
128 | 0 => 308,
129 | 1 => 308,
130 | 'interval' => true,
131 | ),
132 | 107 =>
133 | array (
134 | 0 => 598,
135 | 1 => 308,
136 | 2 => 938,
137 | 3 => 641,
138 | 4 => 618,
139 | ),
140 | 112 =>
141 | array (
142 | 0 => 644,
143 | 1 => 644,
144 | 'interval' => true,
145 | ),
146 | 114 =>
147 | array (
148 | 0 => 444,
149 | 1 => 536,
150 | 2 => 430,
151 | 3 => 641,
152 | 4 => 586,
153 | 5 => 831,
154 | 6 => 580,
155 | 7 => 586,
156 | 8 => 523,
157 | 9 => 641,
158 | 10 => 329,
159 | 11 => 641,
160 | 12 => 754,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-bold-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusanscondensed-bold-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-bold-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 262148,
9 | 'FontBBox' => '[-962 -415 1778 1174]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansCondensed-Bold.ttf';
17 | $originalsize=631992;
18 | $fontkey='dejavusanscondensedB';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-boldoblique-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 313,
10 | 1 => 410,
11 | 2 => 469,
12 | ),
13 | 35 =>
14 | array (
15 | 0 => 626,
16 | 1 => 626,
17 | 'interval' => true,
18 | ),
19 | 37 =>
20 | array (
21 | 0 => 901,
22 | 1 => 785,
23 | 2 => 275,
24 | ),
25 | 40 =>
26 | array (
27 | 0 => 411,
28 | 1 => 411,
29 | 'interval' => true,
30 | ),
31 | 42 =>
32 | array (
33 | 0 => 470,
34 | 1 => 754,
35 | 2 => 342,
36 | 3 => 374,
37 | 4 => 342,
38 | 5 => 329,
39 | ),
40 | 48 =>
41 | array (
42 | 0 => 626,
43 | 1 => 626,
44 | 'interval' => true,
45 | 2 => 626,
46 | 3 => 626,
47 | 4 => 626,
48 | 5 => 626,
49 | 6 => 626,
50 | 7 => 626,
51 | 8 => 626,
52 | 9 => 626,
53 | ),
54 | 58 =>
55 | array (
56 | 0 => 360,
57 | 1 => 360,
58 | 'interval' => true,
59 | ),
60 | 60 =>
61 | array (
62 | 0 => 754,
63 | 1 => 754,
64 | 'interval' => true,
65 | 2 => 754,
66 | ),
67 | 63 =>
68 | array (
69 | 0 => 522,
70 | 1 => 900,
71 | 2 => 696,
72 | 3 => 686,
73 | 4 => 660,
74 | 5 => 747,
75 | ),
76 | 69 =>
77 | array (
78 | 0 => 615,
79 | 1 => 615,
80 | 'interval' => true,
81 | ),
82 | 71 =>
83 | array (
84 | 0 => 738,
85 | 1 => 753,
86 | ),
87 | 73 =>
88 | array (
89 | 0 => 334,
90 | 1 => 334,
91 | 'interval' => true,
92 | ),
93 | 75 =>
94 | array (
95 | 0 => 697,
96 | 1 => 573,
97 | 2 => 896,
98 | 3 => 753,
99 | 4 => 765,
100 | 5 => 659,
101 | 6 => 765,
102 | 7 => 693,
103 | 8 => 648,
104 | 9 => 614,
105 | 10 => 730,
106 | 11 => 696,
107 | 12 => 993,
108 | 13 => 694,
109 | 14 => 651,
110 | 15 => 652,
111 | 16 => 411,
112 | 17 => 329,
113 | 18 => 411,
114 | 19 => 754,
115 | ),
116 | 95 =>
117 | array (
118 | 0 => 450,
119 | 1 => 450,
120 | 'interval' => true,
121 | ),
122 | 97 =>
123 | array (
124 | 0 => 607,
125 | 1 => 644,
126 | 2 => 533,
127 | 3 => 644,
128 | 4 => 610,
129 | 5 => 391,
130 | 6 => 644,
131 | 7 => 641,
132 | ),
133 | 105 =>
134 | array (
135 | 0 => 308,
136 | 1 => 308,
137 | 'interval' => true,
138 | ),
139 | 107 =>
140 | array (
141 | 0 => 598,
142 | 1 => 308,
143 | 2 => 938,
144 | 3 => 641,
145 | 4 => 618,
146 | ),
147 | 112 =>
148 | array (
149 | 0 => 644,
150 | 1 => 644,
151 | 'interval' => true,
152 | ),
153 | 114 =>
154 | array (
155 | 0 => 444,
156 | 1 => 536,
157 | 2 => 430,
158 | 3 => 641,
159 | 4 => 586,
160 | 5 => 831,
161 | 6 => 580,
162 | 7 => 586,
163 | 8 => 523,
164 | 9 => 641,
165 | 10 => 329,
166 | 11 => 641,
167 | 12 => 754,
168 | ),
169 | );
170 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-boldoblique-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusanscondensed-boldoblique-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-boldoblique-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 262212,
9 | 'FontBBox' => '[-960 -385 1799 1121]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansCondensed-BoldOblique.ttf';
17 | $originalsize=580168;
18 | $fontkey='dejavusanscondensedBI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 286,
10 | 1 => 360,
11 | 2 => 414,
12 | 3 => 754,
13 | 4 => 572,
14 | 5 => 855,
15 | 6 => 702,
16 | 7 => 247,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 351,
21 | 1 => 351,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 450,
27 | 1 => 754,
28 | 2 => 286,
29 | 3 => 325,
30 | 4 => 286,
31 | 5 => 303,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 572,
36 | 1 => 572,
37 | 'interval' => true,
38 | 2 => 572,
39 | 3 => 572,
40 | 4 => 572,
41 | 5 => 572,
42 | 6 => 572,
43 | 7 => 572,
44 | 8 => 572,
45 | 9 => 572,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 303,
50 | 1 => 303,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 478,
63 | 1 => 900,
64 | 2 => 615,
65 | 3 => 617,
66 | 4 => 628,
67 | 5 => 693,
68 | 6 => 568,
69 | 7 => 518,
70 | 8 => 697,
71 | 9 => 677,
72 | ),
73 | 73 =>
74 | array (
75 | 0 => 265,
76 | 1 => 265,
77 | 'interval' => true,
78 | ),
79 | 75 =>
80 | array (
81 | 0 => 590,
82 | 1 => 501,
83 | 2 => 776,
84 | 3 => 673,
85 | 4 => 708,
86 | 5 => 542,
87 | 6 => 708,
88 | 7 => 625,
89 | 8 => 571,
90 | 9 => 549,
91 | 10 => 659,
92 | 11 => 615,
93 | 12 => 890,
94 | 13 => 616,
95 | 14 => 549,
96 | 15 => 616,
97 | 16 => 351,
98 | 17 => 303,
99 | 18 => 351,
100 | 19 => 754,
101 | ),
102 | 95 =>
103 | array (
104 | 0 => 450,
105 | 1 => 450,
106 | 'interval' => true,
107 | ),
108 | 97 =>
109 | array (
110 | 0 => 551,
111 | 1 => 571,
112 | 2 => 495,
113 | 3 => 571,
114 | 4 => 554,
115 | 5 => 316,
116 | 6 => 571,
117 | 7 => 570,
118 | ),
119 | 105 =>
120 | array (
121 | 0 => 250,
122 | 1 => 250,
123 | 'interval' => true,
124 | ),
125 | 107 =>
126 | array (
127 | 0 => 521,
128 | 1 => 250,
129 | 2 => 876,
130 | 3 => 570,
131 | 4 => 550,
132 | ),
133 | 112 =>
134 | array (
135 | 0 => 571,
136 | 1 => 571,
137 | 'interval' => true,
138 | ),
139 | 114 =>
140 | array (
141 | 0 => 370,
142 | 1 => 469,
143 | 2 => 353,
144 | 3 => 570,
145 | 4 => 532,
146 | 5 => 736,
147 | ),
148 | 120 =>
149 | array (
150 | 0 => 532,
151 | 1 => 532,
152 | 'interval' => true,
153 | ),
154 | 122 =>
155 | array (
156 | 0 => 472,
157 | 1 => 572,
158 | 2 => 303,
159 | 3 => 572,
160 | 4 => 754,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusanscondensed-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 4,
9 | 'FontBBox' => '[-918 -415 1513 1167]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansCondensed.ttf';
17 | $originalsize=643852;
18 | $fontkey='dejavusanscondensed';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-oblique-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 286,
10 | 1 => 360,
11 | 2 => 414,
12 | 3 => 754,
13 | 4 => 572,
14 | 5 => 855,
15 | 6 => 702,
16 | 7 => 247,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 351,
21 | 1 => 351,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 450,
27 | 1 => 754,
28 | 2 => 286,
29 | 3 => 325,
30 | 4 => 286,
31 | 5 => 303,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 572,
36 | 1 => 572,
37 | 'interval' => true,
38 | 2 => 572,
39 | 3 => 572,
40 | 4 => 572,
41 | 5 => 572,
42 | 6 => 572,
43 | 7 => 572,
44 | 8 => 572,
45 | 9 => 572,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 303,
50 | 1 => 303,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 478,
63 | 1 => 900,
64 | 2 => 615,
65 | 3 => 617,
66 | 4 => 628,
67 | 5 => 693,
68 | 6 => 568,
69 | 7 => 518,
70 | 8 => 697,
71 | 9 => 677,
72 | ),
73 | 73 =>
74 | array (
75 | 0 => 265,
76 | 1 => 265,
77 | 'interval' => true,
78 | ),
79 | 75 =>
80 | array (
81 | 0 => 590,
82 | 1 => 501,
83 | 2 => 776,
84 | 3 => 673,
85 | 4 => 708,
86 | 5 => 542,
87 | 6 => 708,
88 | 7 => 625,
89 | 8 => 571,
90 | 9 => 549,
91 | 10 => 659,
92 | 11 => 615,
93 | 12 => 890,
94 | 13 => 616,
95 | 14 => 549,
96 | 15 => 616,
97 | 16 => 351,
98 | 17 => 303,
99 | 18 => 351,
100 | 19 => 754,
101 | ),
102 | 95 =>
103 | array (
104 | 0 => 450,
105 | 1 => 450,
106 | 'interval' => true,
107 | ),
108 | 97 =>
109 | array (
110 | 0 => 551,
111 | 1 => 571,
112 | 2 => 495,
113 | 3 => 571,
114 | 4 => 554,
115 | 5 => 316,
116 | 6 => 571,
117 | 7 => 570,
118 | ),
119 | 105 =>
120 | array (
121 | 0 => 250,
122 | 1 => 250,
123 | 'interval' => true,
124 | ),
125 | 107 =>
126 | array (
127 | 0 => 521,
128 | 1 => 250,
129 | 2 => 876,
130 | 3 => 570,
131 | 4 => 550,
132 | ),
133 | 112 =>
134 | array (
135 | 0 => 571,
136 | 1 => 571,
137 | 'interval' => true,
138 | ),
139 | 114 =>
140 | array (
141 | 0 => 370,
142 | 1 => 469,
143 | 2 => 353,
144 | 3 => 570,
145 | 4 => 532,
146 | 5 => 736,
147 | ),
148 | 120 =>
149 | array (
150 | 0 => 532,
151 | 1 => 532,
152 | 'interval' => true,
153 | ),
154 | 122 =>
155 | array (
156 | 0 => 472,
157 | 1 => 572,
158 | 2 => 303,
159 | 3 => 572,
160 | 4 => 754,
161 | ),
162 | );
163 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-oblique-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusanscondensed-oblique-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusanscondensed-oblique-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 68,
9 | 'FontBBox' => '[-914 -350 1493 1068]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansCondensed-Oblique.ttf';
17 | $originalsize=576004;
18 | $fontkey='dejavusanscondensedI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-bold-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 602,
10 | 1 => 602,
11 | 'interval' => true,
12 | 2 => 602,
13 | 3 => 602,
14 | 4 => 602,
15 | 5 => 602,
16 | 6 => 602,
17 | 7 => 602,
18 | 8 => 602,
19 | 9 => 602,
20 | 10 => 602,
21 | 11 => 602,
22 | 12 => 602,
23 | 13 => 602,
24 | 14 => 602,
25 | 15 => 602,
26 | 16 => 602,
27 | 17 => 602,
28 | 18 => 602,
29 | 19 => 602,
30 | 20 => 602,
31 | 21 => 602,
32 | 22 => 602,
33 | 23 => 602,
34 | 24 => 602,
35 | 25 => 602,
36 | 26 => 602,
37 | 27 => 602,
38 | 28 => 602,
39 | 29 => 602,
40 | 30 => 602,
41 | 31 => 602,
42 | 32 => 602,
43 | 33 => 602,
44 | 34 => 602,
45 | 35 => 602,
46 | 36 => 602,
47 | 37 => 602,
48 | 38 => 602,
49 | 39 => 602,
50 | 40 => 602,
51 | 41 => 602,
52 | 42 => 602,
53 | 43 => 602,
54 | 44 => 602,
55 | 45 => 602,
56 | 46 => 602,
57 | 47 => 602,
58 | 48 => 602,
59 | 49 => 602,
60 | 50 => 602,
61 | 51 => 602,
62 | 52 => 602,
63 | 53 => 602,
64 | 54 => 602,
65 | 55 => 602,
66 | 56 => 602,
67 | 57 => 602,
68 | 58 => 602,
69 | 59 => 602,
70 | 60 => 602,
71 | 61 => 602,
72 | 62 => 602,
73 | 63 => 602,
74 | 64 => 602,
75 | 65 => 602,
76 | 66 => 602,
77 | 67 => 602,
78 | 68 => 602,
79 | 69 => 602,
80 | 70 => 602,
81 | 71 => 602,
82 | 72 => 602,
83 | 73 => 602,
84 | 74 => 602,
85 | 75 => 602,
86 | 76 => 602,
87 | 77 => 602,
88 | 78 => 602,
89 | 79 => 602,
90 | 80 => 602,
91 | 81 => 602,
92 | 82 => 602,
93 | 83 => 602,
94 | 84 => 602,
95 | 85 => 602,
96 | 86 => 602,
97 | 87 => 602,
98 | 88 => 602,
99 | 89 => 602,
100 | 90 => 602,
101 | 91 => 602,
102 | 92 => 602,
103 | 93 => 602,
104 | 94 => 602,
105 | ),
106 | );
107 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-bold-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusansmono-bold-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-bold-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 262149,
9 | 'FontBBox' => '[-447 -394 731 1052]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 602.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansMono-Bold.ttf';
17 | $originalsize=313856;
18 | $fontkey='dejavusansmonoB';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-boldoblique-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 602,
10 | 1 => 602,
11 | 'interval' => true,
12 | 2 => 602,
13 | 3 => 602,
14 | 4 => 602,
15 | 5 => 602,
16 | 6 => 602,
17 | 7 => 602,
18 | 8 => 602,
19 | 9 => 602,
20 | 10 => 602,
21 | 11 => 602,
22 | 12 => 602,
23 | 13 => 602,
24 | 14 => 602,
25 | 15 => 602,
26 | 16 => 602,
27 | 17 => 602,
28 | 18 => 602,
29 | 19 => 602,
30 | 20 => 602,
31 | 21 => 602,
32 | 22 => 602,
33 | 23 => 602,
34 | 24 => 602,
35 | 25 => 602,
36 | 26 => 602,
37 | 27 => 602,
38 | 28 => 602,
39 | 29 => 602,
40 | 30 => 602,
41 | 31 => 602,
42 | 32 => 602,
43 | 33 => 602,
44 | 34 => 602,
45 | 35 => 602,
46 | 36 => 602,
47 | 37 => 602,
48 | 38 => 602,
49 | 39 => 602,
50 | 40 => 602,
51 | 41 => 602,
52 | 42 => 602,
53 | 43 => 602,
54 | 44 => 602,
55 | 45 => 602,
56 | 46 => 602,
57 | 47 => 602,
58 | 48 => 602,
59 | 49 => 602,
60 | 50 => 602,
61 | 51 => 602,
62 | 52 => 602,
63 | 53 => 602,
64 | 54 => 602,
65 | 55 => 602,
66 | 56 => 602,
67 | 57 => 602,
68 | 58 => 602,
69 | 59 => 602,
70 | 60 => 602,
71 | 61 => 602,
72 | 62 => 602,
73 | 63 => 602,
74 | 64 => 602,
75 | 65 => 602,
76 | 66 => 602,
77 | 67 => 602,
78 | 68 => 602,
79 | 69 => 602,
80 | 70 => 602,
81 | 71 => 602,
82 | 72 => 602,
83 | 73 => 602,
84 | 74 => 602,
85 | 75 => 602,
86 | 76 => 602,
87 | 77 => 602,
88 | 78 => 602,
89 | 79 => 602,
90 | 80 => 602,
91 | 81 => 602,
92 | 82 => 602,
93 | 83 => 602,
94 | 84 => 602,
95 | 85 => 602,
96 | 86 => 602,
97 | 87 => 602,
98 | 88 => 602,
99 | 89 => 602,
100 | 90 => 602,
101 | 91 => 602,
102 | 92 => 602,
103 | 93 => 602,
104 | 94 => 602,
105 | ),
106 | );
107 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-boldoblique-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavusansmono-boldoblique-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-boldoblique-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 262213,
9 | 'FontBBox' => '[-425 -394 808 1053]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 602.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansMono-BoldOblique.ttf';
17 | $originalsize=235848;
18 | $fontkey='dejavusansmonoBI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 602,
10 | 1 => 602,
11 | 'interval' => true,
12 | 2 => 602,
13 | 3 => 602,
14 | 4 => 602,
15 | 5 => 602,
16 | 6 => 602,
17 | 7 => 602,
18 | 8 => 602,
19 | 9 => 602,
20 | 10 => 602,
21 | 11 => 602,
22 | 12 => 602,
23 | 13 => 602,
24 | 14 => 602,
25 | 15 => 602,
26 | 16 => 602,
27 | 17 => 602,
28 | 18 => 602,
29 | 19 => 602,
30 | 20 => 602,
31 | 21 => 602,
32 | 22 => 602,
33 | 23 => 602,
34 | 24 => 602,
35 | 25 => 602,
36 | 26 => 602,
37 | 27 => 602,
38 | 28 => 602,
39 | 29 => 602,
40 | 30 => 602,
41 | 31 => 602,
42 | 32 => 602,
43 | 33 => 602,
44 | 34 => 602,
45 | 35 => 602,
46 | 36 => 602,
47 | 37 => 602,
48 | 38 => 602,
49 | 39 => 602,
50 | 40 => 602,
51 | 41 => 602,
52 | 42 => 602,
53 | 43 => 602,
54 | 44 => 602,
55 | 45 => 602,
56 | 46 => 602,
57 | 47 => 602,
58 | 48 => 602,
59 | 49 => 602,
60 | 50 => 602,
61 | 51 => 602,
62 | 52 => 602,
63 | 53 => 602,
64 | 54 => 602,
65 | 55 => 602,
66 | 56 => 602,
67 | 57 => 602,
68 | 58 => 602,
69 | 59 => 602,
70 | 60 => 602,
71 | 61 => 602,
72 | 62 => 602,
73 | 63 => 602,
74 | 64 => 602,
75 | 65 => 602,
76 | 66 => 602,
77 | 67 => 602,
78 | 68 => 602,
79 | 69 => 602,
80 | 70 => 602,
81 | 71 => 602,
82 | 72 => 602,
83 | 73 => 602,
84 | 74 => 602,
85 | 75 => 602,
86 | 76 => 602,
87 | 77 => 602,
88 | 78 => 602,
89 | 79 => 602,
90 | 80 => 602,
91 | 81 => 602,
92 | 82 => 602,
93 | 83 => 602,
94 | 84 => 602,
95 | 85 => 602,
96 | 86 => 602,
97 | 87 => 602,
98 | 88 => 602,
99 | 89 => 602,
100 | 90 => 602,
101 | 91 => 602,
102 | 92 => 602,
103 | 93 => 602,
104 | 94 => 602,
105 | ),
106 | );
107 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 5,
9 | 'FontBBox' => '[-558 -375 718 1042]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 602.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansMono.ttf';
17 | $originalsize=333636;
18 | $fontkey='dejavusansmono';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-oblique-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 602,
10 | 1 => 602,
11 | 'interval' => true,
12 | 2 => 602,
13 | 3 => 602,
14 | 4 => 602,
15 | 5 => 602,
16 | 6 => 602,
17 | 7 => 602,
18 | 8 => 602,
19 | 9 => 602,
20 | 10 => 602,
21 | 11 => 602,
22 | 12 => 602,
23 | 13 => 602,
24 | 14 => 602,
25 | 15 => 602,
26 | 16 => 602,
27 | 17 => 602,
28 | 18 => 602,
29 | 19 => 602,
30 | 20 => 602,
31 | 21 => 602,
32 | 22 => 602,
33 | 23 => 602,
34 | 24 => 602,
35 | 25 => 602,
36 | 26 => 602,
37 | 27 => 602,
38 | 28 => 602,
39 | 29 => 602,
40 | 30 => 602,
41 | 31 => 602,
42 | 32 => 602,
43 | 33 => 602,
44 | 34 => 602,
45 | 35 => 602,
46 | 36 => 602,
47 | 37 => 602,
48 | 38 => 602,
49 | 39 => 602,
50 | 40 => 602,
51 | 41 => 602,
52 | 42 => 602,
53 | 43 => 602,
54 | 44 => 602,
55 | 45 => 602,
56 | 46 => 602,
57 | 47 => 602,
58 | 48 => 602,
59 | 49 => 602,
60 | 50 => 602,
61 | 51 => 602,
62 | 52 => 602,
63 | 53 => 602,
64 | 54 => 602,
65 | 55 => 602,
66 | 56 => 602,
67 | 57 => 602,
68 | 58 => 602,
69 | 59 => 602,
70 | 60 => 602,
71 | 61 => 602,
72 | 62 => 602,
73 | 63 => 602,
74 | 64 => 602,
75 | 65 => 602,
76 | 66 => 602,
77 | 67 => 602,
78 | 68 => 602,
79 | 69 => 602,
80 | 70 => 602,
81 | 71 => 602,
82 | 72 => 602,
83 | 73 => 602,
84 | 74 => 602,
85 | 75 => 602,
86 | 76 => 602,
87 | 77 => 602,
88 | 78 => 602,
89 | 79 => 602,
90 | 80 => 602,
91 | 81 => 602,
92 | 82 => 602,
93 | 83 => 602,
94 | 84 => 602,
95 | 85 => 602,
96 | 86 => 602,
97 | 87 => 602,
98 | 88 => 602,
99 | 89 => 602,
100 | 90 => 602,
101 | 91 => 602,
102 | 92 => 602,
103 | 93 => 602,
104 | 94 => 602,
105 | ),
106 | );
107 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavusansmono-oblique-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 69,
9 | 'FontBBox' => '[-403 -375 746 1028]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 602.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSansMono-Oblique.ttf';
17 | $originalsize=241972;
18 | $fontkey='dejavusansmonoI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-bold-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 348,
10 | 1 => 439,
11 | 2 => 521,
12 | 3 => 838,
13 | 4 => 696,
14 | 5 => 950,
15 | 6 => 903,
16 | 7 => 306,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 473,
21 | 1 => 473,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 523,
27 | 1 => 838,
28 | 2 => 348,
29 | 3 => 415,
30 | 4 => 348,
31 | 5 => 365,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 696,
36 | 1 => 696,
37 | 'interval' => true,
38 | 2 => 696,
39 | 3 => 696,
40 | 4 => 696,
41 | 5 => 696,
42 | 6 => 696,
43 | 7 => 696,
44 | 8 => 696,
45 | 9 => 696,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 369,
50 | 1 => 369,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 586,
63 | 1 => 1000,
64 | 2 => 776,
65 | 3 => 845,
66 | 4 => 796,
67 | 5 => 867,
68 | 6 => 762,
69 | 7 => 710,
70 | 8 => 854,
71 | 9 => 945,
72 | 10 => 468,
73 | 11 => 473,
74 | 12 => 869,
75 | 13 => 703,
76 | 14 => 1107,
77 | 15 => 914,
78 | 16 => 871,
79 | 17 => 752,
80 | 18 => 871,
81 | 19 => 831,
82 | 20 => 722,
83 | 21 => 744,
84 | 22 => 872,
85 | 23 => 776,
86 | 24 => 1123,
87 | 25 => 776,
88 | 26 => 714,
89 | 27 => 730,
90 | 28 => 473,
91 | 29 => 365,
92 | 30 => 473,
93 | 31 => 838,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 500,
98 | 1 => 500,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 648,
104 | 1 => 699,
105 | 2 => 609,
106 | 3 => 699,
107 | 4 => 636,
108 | 5 => 430,
109 | 6 => 699,
110 | 7 => 727,
111 | 8 => 380,
112 | 9 => 362,
113 | 10 => 693,
114 | 11 => 380,
115 | 12 => 1058,
116 | 13 => 727,
117 | 14 => 667,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 699,
122 | 1 => 699,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 527,
128 | 1 => 563,
129 | 2 => 462,
130 | 3 => 727,
131 | 4 => 581,
132 | 5 => 861,
133 | 6 => 596,
134 | 7 => 581,
135 | 8 => 568,
136 | 9 => 643,
137 | 10 => 364,
138 | 11 => 643,
139 | 12 => 838,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-bold-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserif-bold-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-bold-font-metrics.php:
--------------------------------------------------------------------------------
1 | 939.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 939.0,
8 | 'Flags' => 262148,
9 | 'FontBBox' => '[-836 -389 1796 1145]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerif-Bold.ttf';
17 | $originalsize=341072;
18 | $fontkey='dejavuserifB';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-bolditalic-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 348,
10 | 1 => 439,
11 | 2 => 521,
12 | 3 => 838,
13 | 4 => 696,
14 | 5 => 950,
15 | 6 => 903,
16 | 7 => 306,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 473,
21 | 1 => 473,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 523,
27 | 1 => 838,
28 | 2 => 348,
29 | 3 => 415,
30 | 4 => 348,
31 | 5 => 365,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 696,
36 | 1 => 696,
37 | 'interval' => true,
38 | 2 => 696,
39 | 3 => 696,
40 | 4 => 696,
41 | 5 => 696,
42 | 6 => 696,
43 | 7 => 696,
44 | 8 => 696,
45 | 9 => 696,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 369,
50 | 1 => 369,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 586,
63 | 1 => 1000,
64 | 2 => 776,
65 | 3 => 845,
66 | 4 => 796,
67 | 5 => 867,
68 | 6 => 762,
69 | 7 => 710,
70 | 8 => 854,
71 | 9 => 945,
72 | 10 => 468,
73 | 11 => 473,
74 | 12 => 869,
75 | 13 => 703,
76 | 14 => 1107,
77 | 15 => 914,
78 | 16 => 871,
79 | 17 => 752,
80 | 18 => 871,
81 | 19 => 831,
82 | 20 => 722,
83 | 21 => 744,
84 | 22 => 872,
85 | 23 => 776,
86 | 24 => 1123,
87 | 25 => 776,
88 | 26 => 714,
89 | 27 => 730,
90 | 28 => 473,
91 | 29 => 365,
92 | 30 => 473,
93 | 31 => 838,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 500,
98 | 1 => 500,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 648,
104 | 1 => 699,
105 | 2 => 609,
106 | 3 => 699,
107 | 4 => 636,
108 | 5 => 430,
109 | 6 => 699,
110 | 7 => 727,
111 | 8 => 380,
112 | 9 => 362,
113 | 10 => 693,
114 | 11 => 380,
115 | 12 => 1058,
116 | 13 => 727,
117 | 14 => 667,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 699,
122 | 1 => 699,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 527,
128 | 1 => 563,
129 | 2 => 462,
130 | 3 => 727,
131 | 4 => 581,
132 | 5 => 861,
133 | 6 => 596,
134 | 7 => 581,
135 | 8 => 568,
136 | 9 => 643,
137 | 10 => 364,
138 | 11 => 643,
139 | 12 => 838,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-bolditalic-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserif-bolditalic-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-bolditalic-font-metrics.php:
--------------------------------------------------------------------------------
1 | 939.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 939.0,
8 | 'Flags' => 262212,
9 | 'FontBBox' => '[-906 -389 1754 1145]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerif-BoldItalic.ttf';
17 | $originalsize=332036;
18 | $fontkey='dejavuserifBI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 318,
10 | 1 => 402,
11 | 2 => 460,
12 | 3 => 838,
13 | 4 => 636,
14 | 5 => 950,
15 | 6 => 890,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 390,
21 | 1 => 390,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 500,
27 | 1 => 838,
28 | 2 => 318,
29 | 3 => 338,
30 | 4 => 318,
31 | 5 => 337,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 636,
36 | 1 => 636,
37 | 'interval' => true,
38 | 2 => 636,
39 | 3 => 636,
40 | 4 => 636,
41 | 5 => 636,
42 | 6 => 636,
43 | 7 => 636,
44 | 8 => 636,
45 | 9 => 636,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 337,
50 | 1 => 337,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 536,
63 | 1 => 1000,
64 | 2 => 722,
65 | 3 => 735,
66 | 4 => 765,
67 | 5 => 802,
68 | 6 => 730,
69 | 7 => 694,
70 | 8 => 799,
71 | 9 => 872,
72 | 10 => 395,
73 | 11 => 401,
74 | 12 => 747,
75 | 13 => 664,
76 | 14 => 1024,
77 | 15 => 875,
78 | 16 => 820,
79 | 17 => 673,
80 | 18 => 820,
81 | 19 => 753,
82 | 20 => 685,
83 | 21 => 667,
84 | 22 => 843,
85 | 23 => 722,
86 | 24 => 1028,
87 | 25 => 712,
88 | 26 => 660,
89 | 27 => 695,
90 | 28 => 390,
91 | 29 => 337,
92 | 30 => 390,
93 | 31 => 838,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 500,
98 | 1 => 500,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 596,
104 | 1 => 640,
105 | 2 => 560,
106 | 3 => 640,
107 | 4 => 592,
108 | 5 => 370,
109 | 6 => 640,
110 | 7 => 644,
111 | 8 => 320,
112 | 9 => 310,
113 | 10 => 606,
114 | 11 => 320,
115 | 12 => 948,
116 | 13 => 644,
117 | 14 => 602,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 640,
122 | 1 => 640,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 478,
128 | 1 => 513,
129 | 2 => 402,
130 | 3 => 644,
131 | 4 => 565,
132 | 5 => 856,
133 | 6 => 564,
134 | 7 => 565,
135 | 8 => 527,
136 | 9 => 636,
137 | 10 => 337,
138 | 11 => 636,
139 | 12 => 838,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserif-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 4,
9 | 'FontBBox' => '[-770 -347 1679 1109]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerif.ttf';
17 | $originalsize=363200;
18 | $fontkey='dejavuserif';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-italic-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 318,
10 | 1 => 402,
11 | 2 => 460,
12 | 3 => 838,
13 | 4 => 636,
14 | 5 => 950,
15 | 6 => 890,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 390,
21 | 1 => 390,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 500,
27 | 1 => 838,
28 | 2 => 318,
29 | 3 => 338,
30 | 4 => 318,
31 | 5 => 337,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 636,
36 | 1 => 636,
37 | 'interval' => true,
38 | 2 => 636,
39 | 3 => 636,
40 | 4 => 636,
41 | 5 => 636,
42 | 6 => 636,
43 | 7 => 636,
44 | 8 => 636,
45 | 9 => 636,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 337,
50 | 1 => 337,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 838,
56 | 1 => 838,
57 | 'interval' => true,
58 | 2 => 838,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 536,
63 | 1 => 1000,
64 | 2 => 722,
65 | 3 => 735,
66 | 4 => 765,
67 | 5 => 802,
68 | 6 => 730,
69 | 7 => 694,
70 | 8 => 799,
71 | 9 => 872,
72 | 10 => 395,
73 | 11 => 401,
74 | 12 => 747,
75 | 13 => 664,
76 | 14 => 1024,
77 | 15 => 875,
78 | 16 => 820,
79 | 17 => 673,
80 | 18 => 820,
81 | 19 => 753,
82 | 20 => 685,
83 | 21 => 667,
84 | 22 => 843,
85 | 23 => 722,
86 | 24 => 1028,
87 | 25 => 712,
88 | 26 => 660,
89 | 27 => 695,
90 | 28 => 390,
91 | 29 => 337,
92 | 30 => 390,
93 | 31 => 838,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 500,
98 | 1 => 500,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 596,
104 | 1 => 640,
105 | 2 => 560,
106 | 3 => 640,
107 | 4 => 592,
108 | 5 => 370,
109 | 6 => 640,
110 | 7 => 644,
111 | 8 => 320,
112 | 9 => 310,
113 | 10 => 606,
114 | 11 => 320,
115 | 12 => 948,
116 | 13 => 644,
117 | 14 => 602,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 640,
122 | 1 => 640,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 478,
128 | 1 => 513,
129 | 2 => 402,
130 | 3 => 644,
131 | 4 => 565,
132 | 5 => 856,
133 | 6 => 564,
134 | 7 => 565,
135 | 8 => 527,
136 | 9 => 636,
137 | 10 => 337,
138 | 11 => 636,
139 | 12 => 838,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-italic-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserif-italic-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserif-italic-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 68,
9 | 'FontBBox' => '[-839 -347 1645 1109]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 600.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerif-Italic.ttf';
17 | $originalsize=338776;
18 | $fontkey='dejavuserifI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-bold-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 313,
10 | 1 => 395,
11 | 2 => 469,
12 | 3 => 754,
13 | 4 => 626,
14 | 5 => 855,
15 | 6 => 813,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 426,
21 | 1 => 426,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 470,
27 | 1 => 754,
28 | 2 => 313,
29 | 3 => 374,
30 | 4 => 313,
31 | 5 => 329,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 626,
36 | 1 => 626,
37 | 'interval' => true,
38 | 2 => 626,
39 | 3 => 626,
40 | 4 => 626,
41 | 5 => 626,
42 | 6 => 626,
43 | 7 => 626,
44 | 8 => 626,
45 | 9 => 626,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 332,
50 | 1 => 332,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 527,
63 | 1 => 900,
64 | 2 => 698,
65 | 3 => 760,
66 | 4 => 716,
67 | 5 => 780,
68 | 6 => 686,
69 | 7 => 639,
70 | 8 => 769,
71 | 9 => 850,
72 | 10 => 421,
73 | 11 => 426,
74 | 12 => 782,
75 | 13 => 633,
76 | 14 => 996,
77 | 15 => 822,
78 | 16 => 784,
79 | 17 => 677,
80 | 18 => 784,
81 | 19 => 748,
82 | 20 => 650,
83 | 21 => 669,
84 | 22 => 785,
85 | 23 => 698,
86 | 24 => 1011,
87 | 25 => 698,
88 | 26 => 642,
89 | 27 => 657,
90 | 28 => 426,
91 | 29 => 329,
92 | 30 => 426,
93 | 31 => 754,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 450,
98 | 1 => 450,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 583,
104 | 1 => 629,
105 | 2 => 548,
106 | 3 => 629,
107 | 4 => 572,
108 | 5 => 387,
109 | 6 => 629,
110 | 7 => 654,
111 | 8 => 342,
112 | 9 => 325,
113 | 10 => 624,
114 | 11 => 342,
115 | 12 => 952,
116 | 13 => 654,
117 | 14 => 600,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 629,
122 | 1 => 629,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 474,
128 | 1 => 506,
129 | 2 => 416,
130 | 3 => 654,
131 | 4 => 523,
132 | 5 => 774,
133 | 6 => 536,
134 | 7 => 523,
135 | 8 => 511,
136 | 9 => 579,
137 | 10 => 327,
138 | 11 => 579,
139 | 12 => 754,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-bold-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserifcondensed-bold-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-bold-font-metrics.php:
--------------------------------------------------------------------------------
1 | 939.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 939.0,
8 | 'Flags' => 262148,
9 | 'FontBBox' => '[-752 -389 1617 1145]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerifCondensed-Bold.ttf';
17 | $originalsize=316440;
18 | $fontkey='dejavuserifcondensedB';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-bolditalic-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 313,
10 | 1 => 395,
11 | 2 => 469,
12 | 3 => 754,
13 | 4 => 626,
14 | 5 => 855,
15 | 6 => 813,
16 | 7 => 275,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 426,
21 | 1 => 426,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 470,
27 | 1 => 754,
28 | 2 => 313,
29 | 3 => 374,
30 | 4 => 313,
31 | 5 => 329,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 626,
36 | 1 => 626,
37 | 'interval' => true,
38 | 2 => 626,
39 | 3 => 626,
40 | 4 => 626,
41 | 5 => 626,
42 | 6 => 626,
43 | 7 => 626,
44 | 8 => 626,
45 | 9 => 626,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 332,
50 | 1 => 332,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 527,
63 | 1 => 900,
64 | 2 => 698,
65 | 3 => 760,
66 | 4 => 716,
67 | 5 => 780,
68 | 6 => 686,
69 | 7 => 639,
70 | 8 => 769,
71 | 9 => 850,
72 | 10 => 421,
73 | 11 => 426,
74 | 12 => 782,
75 | 13 => 633,
76 | 14 => 996,
77 | 15 => 822,
78 | 16 => 784,
79 | 17 => 677,
80 | 18 => 784,
81 | 19 => 748,
82 | 20 => 650,
83 | 21 => 669,
84 | 22 => 785,
85 | 23 => 698,
86 | 24 => 1011,
87 | 25 => 698,
88 | 26 => 642,
89 | 27 => 657,
90 | 28 => 426,
91 | 29 => 329,
92 | 30 => 426,
93 | 31 => 754,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 450,
98 | 1 => 450,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 583,
104 | 1 => 629,
105 | 2 => 548,
106 | 3 => 629,
107 | 4 => 572,
108 | 5 => 387,
109 | 6 => 629,
110 | 7 => 654,
111 | 8 => 342,
112 | 9 => 325,
113 | 10 => 624,
114 | 11 => 342,
115 | 12 => 952,
116 | 13 => 654,
117 | 14 => 600,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 629,
122 | 1 => 629,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 474,
128 | 1 => 506,
129 | 2 => 416,
130 | 3 => 654,
131 | 4 => 523,
132 | 5 => 774,
133 | 6 => 536,
134 | 7 => 523,
135 | 8 => 511,
136 | 9 => 579,
137 | 10 => 327,
138 | 11 => 579,
139 | 12 => 754,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-bolditalic-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserifcondensed-bolditalic-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-bolditalic-font-metrics.php:
--------------------------------------------------------------------------------
1 | 939.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 939.0,
8 | 'Flags' => 262212,
9 | 'FontBBox' => '[-815 -389 1579 1145]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 165.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerifCondensed-BoldItalic.ttf';
17 | $originalsize=331128;
18 | $fontkey='dejavuserifcondensedBI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 286,
10 | 1 => 361,
11 | 2 => 414,
12 | 3 => 754,
13 | 4 => 572,
14 | 5 => 855,
15 | 6 => 801,
16 | 7 => 247,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 351,
21 | 1 => 351,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 450,
27 | 1 => 754,
28 | 2 => 286,
29 | 3 => 304,
30 | 4 => 286,
31 | 5 => 303,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 572,
36 | 1 => 572,
37 | 'interval' => true,
38 | 2 => 572,
39 | 3 => 572,
40 | 4 => 572,
41 | 5 => 572,
42 | 6 => 572,
43 | 7 => 572,
44 | 8 => 572,
45 | 9 => 572,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 303,
50 | 1 => 303,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 482,
63 | 1 => 900,
64 | 2 => 650,
65 | 3 => 661,
66 | 4 => 688,
67 | 5 => 721,
68 | 6 => 657,
69 | 7 => 624,
70 | 8 => 719,
71 | 9 => 785,
72 | 10 => 355,
73 | 11 => 360,
74 | 12 => 672,
75 | 13 => 598,
76 | 14 => 921,
77 | 15 => 787,
78 | 16 => 738,
79 | 17 => 605,
80 | 18 => 738,
81 | 19 => 677,
82 | 20 => 616,
83 | 21 => 600,
84 | 22 => 758,
85 | 23 => 650,
86 | 24 => 925,
87 | 25 => 641,
88 | 26 => 594,
89 | 27 => 625,
90 | 28 => 351,
91 | 29 => 303,
92 | 30 => 351,
93 | 31 => 754,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 450,
98 | 1 => 450,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 536,
104 | 1 => 576,
105 | 2 => 504,
106 | 3 => 576,
107 | 4 => 532,
108 | 5 => 333,
109 | 6 => 576,
110 | 7 => 580,
111 | 8 => 288,
112 | 9 => 279,
113 | 10 => 545,
114 | 11 => 288,
115 | 12 => 853,
116 | 13 => 580,
117 | 14 => 542,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 576,
122 | 1 => 576,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 430,
128 | 1 => 461,
129 | 2 => 361,
130 | 3 => 580,
131 | 4 => 508,
132 | 5 => 770,
133 | 6 => 507,
134 | 7 => 508,
135 | 8 => 474,
136 | 9 => 572,
137 | 10 => 303,
138 | 11 => 572,
139 | 12 => 754,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserifcondensed-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 4,
9 | 'FontBBox' => '[-693 -347 1512 1109]',
10 | 'ItalicAngle' => 0.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerifCondensed.ttf';
17 | $originalsize=330012;
18 | $fontkey='dejavuserifcondensed';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-italic-character-width-127.php:
--------------------------------------------------------------------------------
1 |
8 | array (
9 | 0 => 286,
10 | 1 => 361,
11 | 2 => 414,
12 | 3 => 754,
13 | 4 => 572,
14 | 5 => 855,
15 | 6 => 801,
16 | 7 => 247,
17 | ),
18 | 40 =>
19 | array (
20 | 0 => 351,
21 | 1 => 351,
22 | 'interval' => true,
23 | ),
24 | 42 =>
25 | array (
26 | 0 => 450,
27 | 1 => 754,
28 | 2 => 286,
29 | 3 => 304,
30 | 4 => 286,
31 | 5 => 303,
32 | ),
33 | 48 =>
34 | array (
35 | 0 => 572,
36 | 1 => 572,
37 | 'interval' => true,
38 | 2 => 572,
39 | 3 => 572,
40 | 4 => 572,
41 | 5 => 572,
42 | 6 => 572,
43 | 7 => 572,
44 | 8 => 572,
45 | 9 => 572,
46 | ),
47 | 58 =>
48 | array (
49 | 0 => 303,
50 | 1 => 303,
51 | 'interval' => true,
52 | ),
53 | 60 =>
54 | array (
55 | 0 => 754,
56 | 1 => 754,
57 | 'interval' => true,
58 | 2 => 754,
59 | ),
60 | 63 =>
61 | array (
62 | 0 => 482,
63 | 1 => 900,
64 | 2 => 650,
65 | 3 => 661,
66 | 4 => 688,
67 | 5 => 721,
68 | 6 => 657,
69 | 7 => 624,
70 | 8 => 719,
71 | 9 => 785,
72 | 10 => 355,
73 | 11 => 360,
74 | 12 => 672,
75 | 13 => 598,
76 | 14 => 921,
77 | 15 => 787,
78 | 16 => 738,
79 | 17 => 605,
80 | 18 => 738,
81 | 19 => 677,
82 | 20 => 616,
83 | 21 => 600,
84 | 22 => 758,
85 | 23 => 650,
86 | 24 => 925,
87 | 25 => 641,
88 | 26 => 594,
89 | 27 => 625,
90 | 28 => 351,
91 | 29 => 303,
92 | 30 => 351,
93 | 31 => 754,
94 | ),
95 | 95 =>
96 | array (
97 | 0 => 450,
98 | 1 => 450,
99 | 'interval' => true,
100 | ),
101 | 97 =>
102 | array (
103 | 0 => 536,
104 | 1 => 576,
105 | 2 => 504,
106 | 3 => 576,
107 | 4 => 532,
108 | 5 => 333,
109 | 6 => 576,
110 | 7 => 580,
111 | 8 => 288,
112 | 9 => 279,
113 | 10 => 545,
114 | 11 => 288,
115 | 12 => 853,
116 | 13 => 580,
117 | 14 => 542,
118 | ),
119 | 112 =>
120 | array (
121 | 0 => 576,
122 | 1 => 576,
123 | 'interval' => true,
124 | ),
125 | 114 =>
126 | array (
127 | 0 => 430,
128 | 1 => 461,
129 | 2 => 361,
130 | 3 => 580,
131 | 4 => 508,
132 | 5 => 770,
133 | 6 => 507,
134 | 7 => 508,
135 | 8 => 474,
136 | 9 => 572,
137 | 10 => 303,
138 | 11 => 572,
139 | 12 => 754,
140 | ),
141 | );
142 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-italic-character-widths.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/woocommerce/sensei-certificates/cb1bc6f927de5498af2cbe179754263edb3cff50/lib/tfpdf/font/unifont/dejavuserifcondensed-italic-character-widths.dat
--------------------------------------------------------------------------------
/lib/tfpdf/font/unifont/dejavuserifcondensed-italic-font-metrics.php:
--------------------------------------------------------------------------------
1 | 928.0,
6 | 'Descent' => -236.0,
7 | 'CapHeight' => 928.0,
8 | 'Flags' => 68,
9 | 'FontBBox' => '[-755 -347 1480 1109]',
10 | 'ItalicAngle' => -11.0,
11 | 'StemV' => 87.0,
12 | 'MissingWidth' => 540.0,
13 | );
14 | $flt_underline_pos=-63;
15 | $flt_underline_thickness=44;
16 | $ttffile='../font/unifont/DejaVuSerifCondensed-Italic.ttf';
17 | $originalsize=338140;
18 | $fontkey='dejavuserifcondensedI';
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/font/zapfdingbats.php:
--------------------------------------------------------------------------------
1 | 0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
8 | chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
9 | ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
10 | 'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
11 | 'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
12 | 'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
13 | chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
14 | chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
15 | chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
16 | chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
17 | chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
18 | chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
19 |
--------------------------------------------------------------------------------
/lib/tfpdf/tFPDF/ProtectedPDF.php:
--------------------------------------------------------------------------------
1 | bol_encrypted) {
58 | // Encrypt text
59 | $s = self::RC4($this->ObjectKey($this->int_current_object), $s);
60 | }
61 |
62 | return parent::TextString($s);
63 | }
64 |
65 | /** {@inheritdoc} */
66 | protected function PutStream($str_data)
67 | {
68 | if ($this->bol_encrypted) {
69 | // Encrypt content
70 | $str_data = self::RC4($this->ObjectKey($this->int_current_object), $str_data);
71 | }
72 |
73 | parent::PutStream($str_data);
74 | }
75 |
76 | /** {@inheritdoc} */
77 | public function PutResources()
78 | {
79 | parent::PutResources();
80 |
81 | if ($this->bol_encrypted) {
82 | $this->NewObject();
83 | $this->int_encryption_object_id = $this->int_current_object;
84 | $this->Out('<<');
85 | $this->PutEncryption();
86 | $this->Out('>>');
87 | $this->Out('endobj');
88 | }
89 | }
90 |
91 | /** {@inheritdoc} */
92 | public function PutTrailer()
93 | {
94 | parent::PutTrailer();
95 |
96 | if ($this->bol_encrypted) {
97 | $this->Out('/Encrypt ' . $this->int_encryption_object_id . ' 0 R');
98 | $this->Out('/ID [()()]');
99 | }
100 | }
101 |
102 | /**
103 | * Write encryption metadata to the document
104 | */
105 | public function PutEncryption()
106 | {
107 | $this->Out('/Filter /Standard');
108 | $this->Out('/V 1');
109 | $this->Out('/R 2');
110 |
111 | $this->Out('/O ('.$this->EscapeString($this->str_o_value).')');
112 | $this->Out('/U ('.$this->EscapeString($this->str_u_value).')');
113 | $this->Out('/P '.$this->int_p_value);
114 | }
115 |
116 | /**
117 | * @param array|null $permissions An array of ::PERMISSION_*
118 | * @param string $user_password The password for restricted access to the document (obeying $permissions)
119 | * @param string|null $owner_password The password for unrestricted access to the document (ignoring $permissions)
120 | */
121 | public function SetProtection(array $permissions = null, $user_password = '', $owner_password = null)
122 | {
123 | $protection = self::PROTECTION_BASE;
124 | foreach((array)$permissions as $permission){
125 | // Test for duplicate permissions
126 | if (($protection & $permission) === 0) {
127 | $protection += $permission;
128 | }
129 | }
130 |
131 | if (strlen($user_password) > self::PASSWORD_MAX_LENGTH || strlen((string)$owner_password) > self::PASSWORD_MAX_LENGTH) {
132 | throw new \InvalidArgumentException('Passwords must be no greater than '.self::PASSWORD_MAX_LENGTH.' chars');
133 | }
134 |
135 | if ($owner_password === null) {
136 | // Generate random ownerpassword
137 | $owner_password = substr(uniqid(mt_rand(), true).uniqid(mt_rand(), true), 0, self::PASSWORD_MAX_LENGTH);
138 | }
139 |
140 | $this->InitializeEncryption($user_password, $owner_password, $protection);
141 |
142 | $this->bol_encrypted = true;
143 | }
144 |
145 | /**
146 | * Compute encryption key
147 | */
148 | private function InitializeEncryption($user_password, $owner_password, $protection)
149 | {
150 | // Pad passwords
151 | $user_password = self::FormatEncryptionPassword($user_password);
152 | $owner_password = self::FormatEncryptionPassword($owner_password);
153 |
154 | // Compute values
155 | $this->str_o_value = $this->GenerateOvalue($user_password, $owner_password);
156 | $this->str_encryption_key = $this->GenerateEncryptionKey($user_password, $this->str_o_value, $protection);
157 | $this->str_u_value = $this->GenerateUvalue($this->str_encryption_key);
158 | $this->int_p_value = $this->GeneratePvalue($protection);
159 | }
160 |
161 | /**
162 | * @param string $object_index
163 | * @return string The key for the specified object
164 | */
165 | private function ObjectKey($object_index)
166 | {
167 | return substr($this->MD5to16($this->str_encryption_key.pack('VXxx', $object_index)), 0, 10);
168 | }
169 |
170 | /**
171 | * Get MD5 as binary string
172 | */
173 | private static function MD5to16($string)
174 | {
175 | return pack('H*', md5($string));
176 | }
177 |
178 | /**
179 | * @param string $user_password
180 | * @param string $owner_password
181 | *
182 | * @return string
183 | */
184 | private static function GenerateOvalue($user_password, $owner_password)
185 | {
186 | $tmp = self::MD5to16($owner_password);
187 | $owner_rc4_key = substr($tmp, 0, 5);
188 | return self::RC4($owner_rc4_key, $user_password);
189 | }
190 |
191 | /**
192 | * @param string $str_encryption_key
193 | * @return string
194 | */
195 | private static function GenerateUvalue($str_encryption_key)
196 | {
197 | return self::RC4($str_encryption_key, self::ENCRYPTION_PADDING);
198 | }
199 |
200 | /**
201 | * @param int $protection
202 | * @return int
203 | */
204 | private static function GeneratePvalue($protection)
205 | {
206 | return -(($protection ^ 255) + 1);
207 | }
208 |
209 | /**
210 | * @param string $user_password The padded user password
211 | * @param string $str_o_value
212 | * @param int $protection The protection flags integer value
213 | *
214 | * @return string
215 | */
216 | private static function GenerateEncryptionKey($user_password, $str_o_value, $protection)
217 | {
218 | $tmp = self::MD5to16($user_password.$str_o_value.chr($protection)."\xFF\xFF\xFF");
219 | return substr($tmp, 0, 5);
220 | }
221 |
222 | /**
223 | * @param string $password The raw password
224 | * @return string The password suitable for generating encryption values, padded with data if necessary
225 | */
226 | private static function FormatEncryptionPassword($password)
227 | {
228 | return substr($password.self::ENCRYPTION_PADDING, 0, self::PASSWORD_MAX_LENGTH);
229 | }
230 |
231 | /**
232 | * @param string $key The encryption key
233 | * @param string $data Data to encrypt
234 | * @return string The encrypted data
235 | */
236 | private static function RC4($key, $data)
237 | {
238 | static $last_key;
239 | static $last_state;
240 |
241 | if ($key === $last_key) {
242 | // Same key - use same state
243 | $state = $last_state;
244 | } else {
245 | // Calculate new state
246 | $k = str_repeat($key, 256 / strlen($key) + 1);
247 | $state = range(0, 255);
248 | $j = 0;
249 | for ($i = 0; $i < 256; $i++) {
250 | $t = $state[$i];
251 | $j = ($j + $t + ord($k[$i])) % 256;
252 | $state[$i] = $state[$j];
253 | $state[$j] = $t;
254 | }
255 | $last_key = $key;
256 | $last_state = $state;
257 | }
258 |
259 | $len = strlen($data);
260 | $a = 0;
261 | $b = 0;
262 | $out = '';
263 | for ($i = 0; $i < $len; $i++) {
264 | $a = ($a + 1) % 256;
265 | $t = $state[$a];
266 | $b = ($b + $t) % 256;
267 | $state[$a] = $state[$b];
268 | $state[$b] = $t;
269 | $k = $state[($state[$a] + $state[$b]) % 256];
270 | $out .= chr(ord($data[$i]) ^ $k);
271 | }
272 |
273 | return $out;
274 | }
275 |
276 | }
277 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sensei-certificates",
3 | "version": "2.5.3",
4 | "description": "Sensei LMS Certificates",
5 | "author": "Automattic",
6 | "license": "GPL-2.0-or-later",
7 | "keywords": [
8 | "wordpress-plugin"
9 | ],
10 | "homepage": "https://woocommerce.com/products/sensei-certificates/",
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/woocommerce/sensei-certificates.git"
14 | },
15 | "bugs": {
16 | "url": "https://github.com/woocommerce/sensei-certificates/issues"
17 | },
18 | "devDependencies": {
19 | "@wordpress/scripts": "wp-6.0"
20 | },
21 | "scripts": {
22 | "build": "npm run build:assets && npm run archive",
23 | "build:assets": "wp-scripts build",
24 | "archive": "composer archive --file=$npm_package_name --format=zip",
25 | "postarchive": "rm -rf $npm_package_name && unzip $npm_package_name.zip -d $npm_package_name && rm $npm_package_name.zip && zip -r $npm_package_name.zip $npm_package_name && rm -rf $npm_package_name",
26 | "check-engines": "wp-scripts check-engines",
27 | "check-licenses": "wp-scripts check-licenses",
28 | "format:js": "wp-scripts format-js",
29 | "lint:css": "wp-scripts lint-style assets/css",
30 | "lint:js": "wp-scripts lint-js assets/js",
31 | "lint:pkg-json": "wp-scripts lint-pkg-json",
32 | "packages-update": "wp-scripts packages-update",
33 | "start": "wp-scripts start",
34 | "i18n:build": "npm run i18n:php",
35 | "i18n:php": "wp i18n make-pot --exclude=lib,vendor,node_modules --skip-js --headers='{\"Last-Translator\":null,\"Language-Team\":null,\"Report-Msgid-Bugs-To\":\"https://wordpress.org/support/plugin/sensei-certificates\"}' . lang/sensei-certificates.pot"
36 | },
37 | "config": {
38 | "wp_org_slug": "sensei-certificates"
39 | },
40 | "dependencies": {
41 | "@wordpress/icons": "wp-6.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/phpcs.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
3 | A custom set of code standard rules to check for WordPress themes and plugins.
4 |
5 |
6 |
7 |
8 | .
9 | ^node_modules/*
10 | ^vendor/*
11 | ^build/*
12 | ^lib/*
13 | tests/
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/readme.txt:
--------------------------------------------------------------------------------
1 | === Sensei LMS Certificates ===
2 | Contributors: automattic, alexsanford1, donnapep, jakeom, gikaragia, renathoc, yscik, m1r0, aaronfc
3 | Tags: certificates, course certificate, sensei lms
4 | Requires at least: 6.5
5 | Tested up to: 6.7
6 | Requires PHP: 7.4
7 | Stable tag: 2.5.3
8 | License: GPLv2+
9 | License URI: http://www.gnu.org/licenses/gpl-2.0.html
10 |
11 | Award your students with a certificate of completion and a sense of accomplishment after finishing a course.
12 |
13 | == Description ==
14 |
15 | = Award your students with a certificate of completion for their completed courses. =
16 |
17 | There’s no feeling quite like it. You’ve studied hard, taken your test and passed (with flying colours, I’m sure)! After all that effort, you’re finally at the end of the course. You want to share this accolade with everyone. Print out your certificate!
18 |
19 | With Sensei LMS Certificates, your students are awarded a certificate for each course they complete through your online school. These certificates can be downloaded, printed and framed on their office wall, or stuck up on the fridge for the entire family to enjoy. If you’d like to make certificates public for all to view, that’s available as well.
20 |
21 | = Customise the certificate design =
22 |
23 | Sensei LMS Certificates includes an advanced certificate design system. Through this system, you can upload your own background image, place and style the size, typeface and colour of the various pieces of text on the certificate and truly create a unique design best suited to your online school.
24 |
25 | If you don’t fancy yourself as a designer, or would prefer to get up and running in not much time, Sensei LMS Certificates includes a stylish default certificate design, suited to any genre of online school.
26 |
27 | = We already have many students who have completed courses! Can they get certificates as well? =
28 |
29 | They certainly can! When activating Sensei LMS Certificates, you will be prompted to generate certificates for each student who has already completed a course. Thankfully, this can be done, for all students, with the click of a button.
30 |
31 | = Increase student retention =
32 |
33 | We all enjoy receiving rewards. If your students complete a single course, and receive their certificate for the hard work they’ve done, they will be statistically more likely to continue on to a further course, in order to re-live the rewarding experience of receiving a certificate for their efforts.
34 |
35 | We look forward to seeing your students light up with excitement when they receive their certificates for all the hard work they’ve done in completing your courses.
36 |
37 | = Key Features =
38 |
39 | * Easily-customised certificate design
40 | * Lean code, to ensure a pleasant experience
41 | * Intuitive integration with Sensei LMS
42 |
43 | == Installation ==
44 |
45 | = Automatic installation =
46 |
47 | 1. Log into your WordPress admin panel and go to *Plugins* > *Add New*.
48 | 2. Enter "Sensei LMS Certificates" into the search field.
49 | 3. Once you've located the plugin, click *Install Now*.
50 | 4. Click *Activate*.
51 |
52 | = Manual installation =
53 |
54 | 1. Download the plugin file to your computer and unzip it.
55 | 2. Using an FTP program, or your hosting control panel, upload the unzipped plugin folder to your WordPress installation's `wp-content/plugins/` directory on the server.
56 | 3. Log into your WordPress admin panel and activate the plugin from the *Plugins* menu.
57 |
58 | == Screenshots ==
59 | 1. Certificate of completion
60 | 2. Customise the certificate design
61 |
62 | == Changelog ==
63 | [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/sensei-certificates/trunk/changelog.txt).
64 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ],
5 | "labels": ["[Type] Maintenance"],
6 | "packageRules": [
7 | {
8 | "depTypeList": ["devDependencies"],
9 | "extends": ["schedule:monthly"],
10 | "groupName": "devDependencies"
11 | },
12 | {
13 | "depTypeList": ["dependencies"],
14 | "extends": ["schedule:monthly"]
15 | },
16 | {
17 | "depTypeList": ["require-dev"],
18 | "extends": ["schedule:monthly"],
19 | "groupName": "require-dev"
20 | }
21 | ]
22 | }
--------------------------------------------------------------------------------
/templates/single-certificate_template.php:
--------------------------------------------------------------------------------
1 | get_image_id() ) {
29 | // stream the example certificate pdf
30 | $woothemes_sensei_certificate_templates->generate_pdf();
31 | exit;
32 | } else {
33 | wp_die( esc_html__( 'You must set a certificate_template primary image before you can preview', 'sensei-certificates' ) );
34 | }
35 |
--------------------------------------------------------------------------------
/uninstall.php:
--------------------------------------------------------------------------------
1 | get_col( "SELECT blog_id FROM $wpdb->blogs" );
37 | $original_blog_id = get_current_blog_id();
38 |
39 | foreach ( $blog_ids as $_blog_id ) {
40 | switch_to_blog( $_blog_id );
41 |
42 | if ( Sensei_Certificate_Data_Cleaner::should_do_cleanup() ) {
43 | Sensei_Certificate_Data_Cleaner::cleanup_all();
44 | }
45 | }
46 |
47 | switch_to_blog( $original_blog_id );
48 | }
49 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const defaultConfig = require( '@wordpress/scripts/config/webpack.config' );
2 | const path = require( 'path' );
3 |
4 | const files = {
5 | 'js/admin': 'js/admin.js',
6 | 'js/course': 'js/course.js',
7 | 'css/admin': 'css/admin.scss',
8 | 'css/frontend': 'css/frontend.scss',
9 | 'blocks/index': 'blocks/index.js',
10 | };
11 |
12 | const baseDist = 'assets/dist/';
13 |
14 | Object.keys( files ).forEach( function ( key ) {
15 | files[ key ] = path.resolve( './assets', files[ key ] );
16 | } );
17 |
18 | module.exports = {
19 | ...defaultConfig,
20 | entry: files,
21 | output: {
22 | path: path.resolve( '.', baseDist ),
23 | },
24 | };
25 |
--------------------------------------------------------------------------------
/woothemes-sensei-certificates.php:
--------------------------------------------------------------------------------
1 |