Server IP : 85.214.239.14 / Your IP : 18.191.218.234 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/task/2/cwd/var/www/wordpress/phpMyAdmin/libraries/classes/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Class with Font related methods. * * @package PhpMyAdmin */ declare(strict_types=1); namespace PhpMyAdmin; /** * Class with Font related methods. * * @package PhpMyAdmin */ class Font { /** * Get list with characters and the corresponding width modifiers. * * @return array with characters and corresponding width modifier * @access public */ public function getCharLists(): array { // list of characters and their width modifiers $charLists = []; //ijl $charLists[] = [ "chars" => [ "i", "j", "l", ], "modifier" => 0.23, ]; //f $charLists[] = [ "chars" => ["f"], "modifier" => 0.27, ]; //tI $charLists[] = [ "chars" => [ "t", "I", ], "modifier" => 0.28, ]; //r $charLists[] = [ "chars" => ["r"], "modifier" => 0.34, ]; //1 $charLists[] = [ "chars" => ["1"], "modifier" => 0.49, ]; //cksvxyzJ $charLists[] = [ "chars" => [ "c", "k", "s", "v", "x", "y", "z", "J", ], "modifier" => 0.5, ]; //abdeghnopquL023456789 $charLists[] = [ "chars" => [ "a", "b", "d", "e", "g", "h", "n", "o", "p", "q", "u", "L", "0", "2", "3", "4", "5", "6", "7", "8", "9", ], "modifier" => 0.56, ]; //FTZ $charLists[] = [ "chars" => [ "F", "T", "Z", ], "modifier" => 0.61, ]; //ABEKPSVXY $charLists[] = [ "chars" => [ "A", "B", "E", "K", "P", "S", "V", "X", "Y", ], "modifier" => 0.67, ]; //wCDHNRU $charLists[] = [ "chars" => [ "w", "C", "D", "H", "N", "R", "U", ], "modifier" => 0.73, ]; //GOQ $charLists[] = [ "chars" => [ "G", "O", "Q", ], "modifier" => 0.78, ]; //mM $charLists[] = [ "chars" => [ "m", "M", ], "modifier" => 0.84, ]; //W $charLists[] = [ "chars" => ["W"], "modifier" => 0.95, ]; //" " $charLists[] = [ "chars" => [" "], "modifier" => 0.28, ]; return $charLists; } /** * Get width of string/text * * The text element width is calculated depending on font name * and font size. * * @param string $text string of which the width will be calculated * @param string $font name of the font like Arial,sans-serif etc * @param integer $fontSize size of font * @param array|null $charLists list of characters and their width modifiers * * @return integer width of the text * @access public */ public function getStringWidth( string $text, string $font, int $fontSize, ?array $charLists = null ): int { if (empty($charLists) || ! isset($charLists[0]["chars"]) || ! is_array($charLists[0]["chars"]) || ! isset($charLists[0]["modifier"]) ) { $charLists = $this->getCharLists(); } /* * Start by counting the width, giving each character a modifying value */ $count = 0; foreach ($charLists as $charList) { $count += ((mb_strlen($text) - mb_strlen(str_replace($charList["chars"], "", $text)) ) * $charList["modifier"]); } $text = str_replace(" ", "", $text);//remove the " "'s //all other chars $count += (mb_strlen(preg_replace("/[a-z0-9]/i", "", $text)) * 0.3); $modifier = 1; $font = mb_strtolower($font); switch ($font) { /* * no modifier for arial and sans-serif */ case 'arial': case 'sans-serif': break; /* * .92 modifier for time, serif, brushscriptstd, and californian fb */ case 'times': case 'serif': case 'brushscriptstd': case 'californian fb': $modifier = .92; break; /* * 1.23 modifier for broadway */ case 'broadway': $modifier = 1.23; break; } $textWidth = $count * $fontSize; return (int) ceil($textWidth * $modifier); } }